2012-06-20 8 views
5

ich Lücken in meinem Auto-Schlüssel erhöht bekommen, auch mitAuto Increment Gaps bei INSERT ... SELECT sogar mit innodb_autoinc_lock_mode = 0

innodb_autoinc_lock_mode = 0 

ich das Problem auf eine einzelne INSERT isoliert ... SELECT-Anweisung . Grundsätzlich inkrementiert jede INSERT ... SELECT-Anweisung das auto_increment der Tabelle um eins , selbst wenn keine Einfügung tatsächlich durchgeführt wird (doppelter Schlüssel). In meinem Fall verwende ich INSERT IGNORE, aber ich testete ohne und auto_increment wird immer noch falsch inkrementiert.

Ich mache mir Sorgen darüber, weil diese INSERT ... SELECT-Anweisung mit etwas Hochfrequenz läuft, so dass Schlüssel schnell groß werden.

Ich werde damit leben, wenn es keinen Weg gibt, aber gibt es eine Möglichkeit, dieses Verhalten zu vermeiden?

Antwort

0

Sieht aus wie ein häufiges Problem in MySQL. Persönlich lebe ich einfach damit.

2

Es ist ein Fehler. Siehe dazu: http://bugs.mysql.com/bug.php?id=61058
... können Sie vermeiden es mit:

ALTER TABLE `test` AUTO_INCREMENT = 1; 

nach jedem insert...select jedoch nicht, dass eine gute Idee ist, weil alter table temporäre Tabelle erstellt, kopiert die Daten und so weiter ..

Verwandte Themen