2010-03-05 17 views
6

Sebbene l'utilizzo di tutti i giorni nella mia programmazione, ma mai realizzato su questa questione:e se il tipo di dati int in mysql raggiunge il limite mentre inserisce i record?

poiché il tipo di dati int(unsigned) può contenere valori da 0 to 4294967295, ciò che effettivamente accade Se io dichiaro che questi campi INT essere incremento automatico e una mattina, si raggiunge solo lo 4294967295? La risposta ovvia sarà che dovrebbe generare un errore che non può essere ulteriormente inserito, ma i dati non si fermano mai e dobbiamo memorizzare i record che continuano a rimanere in memoria. Cosa fare in questo caso?

Dichiara inoltre che int (20) sarà abbastanza grande di questo limite predefinito?

Qualche suggerimento?

Grazie.

+2

20 non cambia il tipo di dati, è solo utilizzato per il riempimento. Usa un BIGINT per numeri interi più grandi. –

risposta

3

Se ottieni 4 miliardi di righe, il fatto che il campo esca è probabilmente l'ultimo dei tuoi problemi.

È possibile dichiarare che è BIGINT, che contiene 8 byte. Significa che conterà fino a 18446744073709551615.

Se si rovescia, torna a 0 e continua a inserire, restituendo un errore se esiste una riga con quel numero.

+1

Sono interessato a conoscere la strategia per i grandi database in cui hanno miliardi di record. Immagino che GUID o UUID sarebbero una scelta allora? – JPro

+1

Bigint autoincrementato è la strada da percorrere se si vuole solo essere sicuri. Riempire 18 quintilioni di file richiederà del tempo, anche con un computer che fa tutto il lavoro costantemente. Per non parlare dello spazio che consumerà. Non penso che ci sia mai stata un'applicazione con così tanti record. Forse un database di DNA mal strutturato, ma dubito seriamente che sarebbero stupidi. –

0

Usa BIGINT - intervallo è 0-18446744073709551615

Problemi correlati