2010-03-05 5 views
6

Obwohl täglich in meiner Programmierung verwenden, aber nie über diese Frage klar:Was passiert, wenn der int-Datentyp in mysql das Limit beim Einfügen von Datensätzen erreicht?

da die int(unsigned) Datentyp kann Werte von 0 to 4294967295, halten, was passiert eigentlich, wenn ich diese INT Felder deklarieren es sein Autoinkrement und eines Morgens, erreicht gerade 4294967295? Die offensichtliche Antwort wird sein, dass es einen Fehler werfen sollte, der nicht weiter einfügen kann, aber die Daten nie aufhören zu kommen und wir müssen die Datensätze speichern, die immer noch commin halten. Was ist in diesem Fall zu tun?

Auch deklariert int (20) wird groß genug sein als diese Standardgrenze?

Irgendwelche Vorschläge?

Danke.

+2

20 nicht den Datentyp ändern, es ist nur zum Auffüllen verwendet. Verwenden Sie einen BIGINT für größere Ganzzahlen. –

Antwort

3

Wenn Sie 4 Milliarden Zeilen erhalten, ist die Tatsache, dass das Feld überläuft, wahrscheinlich das geringste Ihrer Probleme.

Sie können es als BIGINT deklarieren, das 8 Byte enthält. Das bedeutet, dass es bis 18446744073709551615 zählt.

Wenn es überläuft, wird es auf 0 zurückgehen und weiter einfügen, einen Fehler zurückgeben, wenn eine Zeile mit dieser Nummer existiert.

+1

Ich interessiere mich für die Strategie für große Datenbanken, wo sie Milliarden von Datensätzen haben. Ich denke, GUID oder UUID wäre dann eine Wahl? – JPro

+1

Autoincremented bigint ist der Weg zu gehen, wenn Sie nur sicher gehen wollen. Das Auffüllen von 18 Trillionen Zeilen wird einige Zeit in Anspruch nehmen, selbst wenn ein Computer ständig die ganze Arbeit erledigt. Ganz zu schweigen von dem Platz, den es verbrauchen wird. Ich glaube nicht, dass es jemals eine Anwendung gab, die so viele Datensätze hatte. Vielleicht eine schlecht strukturierte DNA-Datenbank, aber ich bezweifle ernsthaft, dass sie so dumm sind. –

0

Verwendung BIGINT - Intervall ist 0-18446744073709551615

Verwandte Themen