2012-12-21 9 views
9

Ich habe eine Frage mit mir wirklich unsicher mit. Zuerst fühlen Sie sich frei, mich zu senken, wenn es ein Muss ist, aber ich möchte wirklich eine erfahrenere Meinung der Entwickler hören.mysql unbegrenzte Primärschlüssel Autoinkrement

Ich baue eine Website, wo ich ähnliche Funktionen wie Google Kreise bauen möchte.

Meine Logik wäre dies. Jedem Benutzer werden nach der Anmeldung Kreise hinzugefügt.

Beispiel, wenn der Benutzer anmelden

eingereicht Form und die folgenden querys werden in die Datenbank

**id | circle_name  | user_id** 
------------------------------------ 
1  | circle one  | 1 
------------------------------ 
2  | circle two  | 1 
------------------------------ 
3  | circle three  | 1 

Jeder Kreis ein primary key

haben insierted sein, aber das ist das, was nicht sicher im, mit, so nach einer zeit habe ich ein bisschen angst, dass der tisch bricht, was ich meine ist, wenn es eine anzahl von ids erreicht, wird es tatsächlich aufhören mehr zu erzeugen.

Wenn Sie einen int in der Datenbank angeben, ist der Standardwert 11, ja, ich weiß, ich kann es betonen oder auf den Wert setzen, was ich will, aber immer noch höhere Werte geben ist eine gute Idee?

oder gibt es eine Möglichkeit, die automatische Erhöhung eines Primärschlüssels unbegrenzt zu machen?

vielen Dank für die Meinungen und Hilfe outs

+0

Für das, was es wert ist, ist die Länge eines int-Felds nicht die tatsächliche Länge. Es ist im Grunde nur nützlich für ZeroFill-Spalten (und die Funktionalität von Null Padding gehört meiner Meinung nach sowieso nicht in die Datenbank). Sie können dies leicht testen: Versuchen Sie, ein 5-Zeichen-int in ein 'int (3)' einzufügen. Es wird es freudig annehmen. In ähnlicher Weise existiert ein "int"> 10 nicht (da 2^31-1 oder 2^32-1 10 Ziffern ist). – Corbin

+0

"Wenn Sie 1M Datensätze pro Sekunde 24x7 einfügen, dauert es 584542 Jahre, bis das Limit erreicht ist." @ 9000 .... http://stackoverflow.com/questions/5762327/mysql-what-if-i-need-a-very-very-big-autoincremen-id – bipen

Antwort

13

oder gibt es eine Möglichkeit, einen Primärschlüssel Autoinkrement zu machen unbegrenzt zu sein?

Sie können eine BIGINT verwenden.

Genau genommen ist es nicht unbegrenzt, aber die Reichweite ist so unglaublich groß, dass Sie nicht alle Werte verbrauchen könnten, selbst wenn Sie sich wirklich anstrengen.

+3

Sie könnten es auch unsigned machen, was lächerlich wäre groß – Dale

+0

vielen Dank für die Hilfe aus – Side

+1

Darüber hinaus, wenn Sie beginnen, zu einem Punkt zu kommen, wo Sie so viele Einträge haben, dass BIGINT nicht mehr gut genug ist, können Sie die klügsten Köpfe auf Erden zu lösen Ihre Datenbankprobleme. –

3

Führen Sie einfach etwas Mathe und Sie werden die Antwort selbst erhalten. Wenn eine Länge kann Milliarden von Werten speichern und Sie nicht erwarten, dass 1 Million Neuanmeldungen haben jede Woche dann zu einem Punkt, wo es bricht wäre „praktisch“ hart, auch wenn „theoretisch“ möglich