2012-12-21 18 views
9

Ho una domanda con Im davvero insicuro. In primo luogo, sentitevi liberi di mandarmi in mina se è un must ma mi piacerebbe davvero sentire un'opinione di sviluppatori più esperti.mysql chiavi primarie illimitate incremento automatico

Sto costruendo un sito in cui mi piacerebbe creare funzionalità simili come cerchi di google.

La mia logica sarebbe questa. Ogni utente avrà cerchi adiacenti a loro dopo la registrazione.

esempio, se l'utente iscriversi

forma depositata e le seguenti querys sarà insierted al database

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

Ogni circolo avrà un primary key

Ma questo è quello che im sicuro con, quindi, dopo un po 'di tempo ho un po' paura che il tavolo si rompa, che significa che se raggiungerà un numero di id, in realtà smetterà di generare più.

Quando si specifica un valore int nel database, il valore predefinito è 11, sì so che posso incrostarlo o impostarlo sul valore che voglio, ma dare comunque valori più alti è una buona idea?

oppure esiste la possibilità di rendere illimitato un incremento automatico della chiave primaria?

grazie per le opinioni e di aiuto out

+0

Per quello che vale, la lunghezza di un campo int non è la lunghezza effettiva. È fondamentalmente utile solo per le colonne zerofill (e la funzionalità di zero padding non appartiene comunque al database a mio parere). Puoi facilmente testarlo: prova ad inserire un int di 5 caratteri in un 'int (3)'. Lo accetterà felicemente. Allo stesso modo un 'int'> 10 non esiste (dal 2^31-1 o 2^32-1 è di 10 cifre). – Corbin

+0

"Se si inseriscono record 1M al secondo 24x7, ci vorranno 584542 anni per raggiungere il limite." @ 9000 .... http://stackoverflow.com/questions/5762327/mysql-what-if-i-need-a-very-very-big-autoincrementidid – bipen

risposta

13

o c'è alcuna possibilità di fare un incremento automatico chiave primaria per essere illimitata?

È possibile utilizzare un BIGINT.

In senso stretto non è illimitato, ma la portata è così incredibilmente enorme che non saresti in grado di utilizzare tutti i valori, anche se ci hai provato davvero.

+3

Si potrebbe anche rendere non firmato che sarebbe ridicolmente big – Dale

+0

grazie mille per l'aiuto – Side

+1

Oltre a questo, quando inizi a raggiungere un punto in cui hai così tante voci che BIGINT non è più abbastanza buono, puoi assumere le menti più intelligenti sulla terra per risolvere i tuoi problemi con il database –

3

Basta eseguire alcuni calcoli e otterrete la risposta da soli. Se una lunghezza in grado di memorizzare miliardi di valori e non si aspettano di avere 1 milione di nuove registrazioni ogni settimana poi di arrivare a un punto in cui si rompe sarebbe "praticamente" duro, anche se "teoricamente" possibile

Problemi correlati