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_mode
parametro su0
, per la modalità di blocco dell'incremento automatico "tradizionale", che garantisce che tuttiINSERT
le istruzioni assegneranno valori consecutivi perAUTO_INCREMENT
colonne. Tuttavia, ciò si ottiene bloccando durante l'istruzione, quindi c'è una perdita di prestazioni associata a questa impostazione. - (Consigliato) Ignora le lacune in
AUTO_INCREMENT
colonna.
Nota:AUTO_INCREMENT
la gestione è completamente diversa in MyISAM, che non mostra questo comportamento.