INSERT ... ON DUPLICATE KEY UPDATE è descritto come un "inserimento in modalità mista" ai fini di AUTO_INCREMENT di InnoDB gestione. Gli inserti in modalità mista sono fondamentalmente quelli in cui il massimo numero di AUTO_INCREMENT richiesti i valori sono noti, ma l'importo che sarà effettivamente necessario non lo è.
Gli inserti in modalità mista vengono gestiti in modo speciale per impostazione predefinita, come descritto in Documenti MySQL :
Se stai usando InnoDB, le tue alternative sono:
- Evita
INSERT ... ON DUPLICATE KEY UPDATE. - Imposta
innodb_autoinc_lock_modeparametro su0, per la modalità di blocco dell'incremento automatico "tradizionale", che garantisce che tuttiINSERTle istruzioni assegneranno valori consecutivi perAUTO_INCREMENTcolonne. Tuttavia, ciò si ottiene bloccando durante l'istruzione, quindi c'è una perdita di prestazioni associata a questa impostazione. - (Consigliato) Ignora le lacune in
AUTO_INCREMENTcolonna.
Nota:AUTO_INCREMENT la gestione è completamente diversa in MyISAM, che non mostra questo comportamento.