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_mode
parâmetro para0
, para o modo de bloqueio de incremento automático "tradicional", que garante que todos osINSERT
instruções atribuirão valores consecutivos paraAUTO_INCREMENT
colunas. 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_INCREMENT
coluna.
Observação:
AUTO_INCREMENT
o manuseio é totalmente diferente no MyISAM, que não apresenta esse comportamento.