INSERIR ... NA ATUALIZAÇÃO DE CHAVE DUPLICADA é descrito como uma "inserção de modo misto" para fins de AUTO_INCREMENT do InnoDB tratamento. As inserções de modo misto são basicamente aquelas em que o máximo número de AUTO_INCREMENT necessários valores são conhecidos, mas a quantidade que realmente será necessária não é. As inserções de modo misto são tratadas especialmente por padrão, conforme descrito no Documentos MySQL :
Se você estiver usando o InnoDB, suas alternativas são:
- Evite
INSERIR ... NA ATUALIZAÇÃO DE CHAVE DUPLICADA. - Defina o
innodb_autoinc_lock_modeparâmetro para0, para o modo de bloqueio de incremento automático "tradicional", que garante que todos osINSERTinstruções atribuirão valores consecutivos paraAUTO_INCREMENTcolunas. No entanto, isso é feito bloqueando durante a instrução, portanto, há uma perda de desempenho associada a essa configuração. - (Recomendado) Ignore as lacunas no
AUTO_INCREMENTcoluna.
Observação:
AUTO_INCREMENT o manuseio é totalmente diferente no MyISAM, que não apresenta esse comportamento.