PDA

View Full Version : [Database] Campo ID di una tabella


UnknownSoldier
22-11-2008, 13:37
Salve. E' da un pò che ho una perplessità: il campo ID di una tabella di solito è di tipo INT, e indifferentemente dal tipo di variabile, ogni variabile ha un limite massimo. Mi chiedo quindi, cosa succede quando l'ID raggiunge il valore massimo? Esiste un metodo per risolvere il tutto? o_O

Kralizek
22-11-2008, 13:45
Salve. E' da un pò che ho una perplessità: il campo ID di una tabella di solito è di tipo INT, e indifferentemente dal tipo di variabile, ogni variabile ha un limite massimo. Mi chiedo quindi, cosa succede quando l'ID raggiunge il valore massimo? Esiste un metodo per risolvere il tutto? o_O

passi al long int o ad un tipo non ordinato a dimensione fissa come il Guid

cionci
22-11-2008, 14:56
Salve. E' da un pò che ho una perplessità: il campo ID di una tabella di solito è di tipo INT, e indifferentemente dal tipo di variabile, ogni variabile ha un limite massimo. Mi chiedo quindi, cosa succede quando l'ID raggiunge il valore massimo? Esiste un metodo per risolvere il tutto? o_O
Facciamo due conti. Un INT usato come id è solitamente a 32 bit. 32 bit significano 4*10^9 record. Un database per contenere 4*10^9 record ha bisogno di 4*10^9*la grandezza della riga byte.
La grandezza minima della riga è 4 byte (la riga contiene solo l'id). Quindi già solo una tabella così occupa minimo 16 GB !!! Pensa ad una tabella che contiene non 4 ma 200 byte per riga. Sono la bellezza di 800 GB.
Non dico che non esistano tabelle così grandi, ma se esistono sicuramente la loro dimensione è stata prevista già in fase di creazione, quindi è sicuramente stato possibile modificare la tabella ad hoc, ad esempio utilizzando interi a 64 bit per l'id. Lì hai voglia che inserire interi...
Un intero a 64 bit può rappresentare 18 exabye ovvero 18*10^18 ovvero 18^10^9 miliardi di record da moltiplicare per la dimensione del record, mettiamo 4, quindi 72 miliardi di GB. Sicuramente non può esistere una tale quantità di dati in una sola entità.

UnknownSoldier
22-11-2008, 16:38
Quindi se ho capito bene il tipo INT può arrivare fino a 4 miliardi? o_O

cionci
22-11-2008, 16:40
Quindi se ho capito bene il tipo INT può arrivare fino a 4 miliardi? o_O
Generalmente sì...2^32

UnknownSoldier
22-11-2008, 18:22
Ok grazie... bhe in questo caso direi che non ci sia bisogno di preoccuparsi di questo :)