INSERT ... ON DUPLICATE KEY UPDATE se describe como una "inserción de modo mixto" para los propósitos de AUTO_INCREMENT de InnoDB manejo. Las inserciones de modo mixto son básicamente aquellas en las que el máximo número de AUTO_INCREMENT requeridos Se conocen los valores, pero la cantidad que realmente se necesitará no lo es.
Las inserciones en modo mixto se manejan especialmente de forma predeterminada, como se describe en Documentos de MySQL :
Si está utilizando InnoDB, sus alternativas son:
- Evite
INSERT ... ON DUPLICATE KEY UPDATE. - Establezca el
innodb_autoinc_lock_modeparámetro a0, para el modo de bloqueo de incremento automático "tradicional", que garantiza que todos losINSERTdeclaraciones asignarán valores consecutivos paraAUTO_INCREMENTcolumnas Sin embargo, esto se logra mediante el bloqueo durante la declaración, por lo que hay una pérdida de rendimiento asociada con esta configuración. - (Recomendado) Ignora los espacios en blanco en el
AUTO_INCREMENTcolumna.
Nota:AUTO_INCREMENT el manejo es totalmente diferente en MyISAM, que no muestra este comportamiento.