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_modeParameter auf0, für den "traditionellen" Autoinkrement-Sperrmodus, der garantiert, dass alleINSERTAnweisungen werden fortlaufende Werte fürAUTO_INCREMENTzuweisen 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_INCREMENTSpalte.
Hinweis:AUTO_INCREMENT Unter MyISAM, das dieses Verhalten nicht zeigt, ist die Handhabung völlig anders.