INSERT ... ON DUPLICATE KEY UPDATE
wird im Sinne von AUTO_INCREMENT
von InnoDB als "mixed-mode insert" beschrieben Handhabung. Mixed-Mode-Einfügungen sind im Grunde solche, bei denen das Maximum Anzahl erforderlicher AUTO_INCREMENT
Werte bekannt, aber die Menge, die tatsächlich benötigt wird ist nicht.
Einfügungen im gemischten Modus werden standardmäßig speziell behandelt, wie im MySQL-Dokumentation :
Wenn Sie InnoDB verwenden, sind Ihre Alternativen:
- Vermeiden Sie
INSERT ... ON DUPLICATE KEY UPDATE
. - Setzen Sie den
innodb_autoinc_lock_mode
Parameter auf0
, für den "traditionellen" Autoinkrement-Sperrmodus, der garantiert, dass alleINSERT
Anweisungen werden fortlaufende Werte fürAUTO_INCREMENT
zuweisen Säulen. Dies wird jedoch durch Sperren während der Anweisung erreicht, sodass mit dieser Einstellung ein Leistungsverlust verbunden ist. - (Empfohlen) Ignorieren Sie die Lücken im
AUTO_INCREMENT
Spalte.
Hinweis:AUTO_INCREMENT
Unter MyISAM, das dieses Verhalten nicht zeigt, ist die Handhabung völlig anders.