Warum erhöht sich die automatische Vergrößerung von MySQL bei fehlgeschlagenen Einfügungen?

Einem co-worker nur hat mir bewusst gemacht, der ein sehr seltsames MySQL Verhalten.

Vorausgesetzt, Sie haben eine Tabelle mit einem auto_increment-Feld und ein weiteres Feld, das eindeutig ist (z.B. eine Benutzername-Feld). Wenn Sie versuchen, einfügen einer Zeile mit Benutzername das ist bereits in der Tabelle einfügen ausfällt, als erwartet. Doch den auto_increment-Wert erhöht ist, wie gesehen werden kann, wenn Sie eine gultige neuen Eintrag nach mehreren gescheiterten versuchen.

Zum Beispiel, wenn unsere Letzte Eintrag sieht so aus...

ID: 10
Username: myname

...und wir versuchen, fünf neue Einträge mit dem gleichen Benutzernamen Wert auf unser Nächstes fügen wir eine neue Zeile etwa so:

ID: 16
Username: mynewname

Zwar ist dies nicht ein großes problem in sich, wie es scheint, eine sehr dumme Angriffen zu töten, einen Tisch und überfluten es mit fehlgeschlagenen insert-Anfragen, die MySQL-Referenz-Handbuch sagt:

"Das Verhalten von auto-increment-Mechanismus ist nicht definiert, wenn [...] der Wert wird größer als die maximale ganze Zahl, die gespeichert werden in der angegebenen integer-Typ."

Ist dieses Verhalten zu erwarten?

InformationsquelleAutor der Frage Sorcy | 2010-05-07

Schreibe einen Kommentar