all'archiviazione utilizzata dipende dal valore numerico effettivo, nonché dalla precisione e dalla scala della colonna della colonna.
I Oracle 11gR2 concepts guide says:
Oracle Database archivia i dati numerici in formato a lunghezza variabile. Ogni valore è memorizzato in notazione scientifica, con 1 byte utilizzato per memorizzare l'esponente. Il database utilizza fino a 20 byte per memorizzare la mantissa, che è la parte di un numero in virgola mobile che contiene le sue cifre significative. Oracle Database non memorizza gli zeri iniziali e finali.
Il 10gR2 guide goes further:
Tenendo conto di ciò, la dimensione di colonna in byte per un particolare numero valore dato numerico (p), dove p è la precisione di un dato valore, può essere calcolato con la seguente formula:
ROUND((length(p)+s)/2))+1
dove s è uguale a zero se il numero è positivo, e s è uguale a 1 se il numero è negativo.
L'infinito positivo e negativo (generato solo all'importazione dal database Versione 5 di Oracle) viene memorizzato utilizzando rappresentazioni univoche. L'infinito zero e negativo richiedono 1 byte ciascuno; infinito positivo richiede 2 byte.
Se si ha accesso a My Oracle Support, sono disponibili ulteriori informazioni nella nota 1031902.6.
You can see the actual storage used with vsize
or dump
.
create table t42 (n number(10));
insert into t42 values (0);
insert into t42 values (1);
insert into t42 values (-1);
insert into t42 values (100);
insert into t42 values (999);
insert into t42 values (65535);
insert into t42 values (1234567890);
select n, vsize(n), dump(n)
from t42
order by n;
N VSIZE(N) DUMP(N)
------------ ---------- ---------------------------------
-1 3 Typ=2 Len=3: 62,100,102
0 1 Typ=2 Len=1: 128
1 2 Typ=2 Len=2: 193,2
100 2 Typ=2 Len=2: 194,2
999 3 Typ=2 Len=3: 194,10,100
65535 4 Typ=2 Len=4: 195,7,56,36
1234567890 6 Typ=2 Len=6: 197,13,35,57,79,91
noti che la memorizzazione varia a seconda del valore, anche se sono tutti in una colonna number(10)
, e che due numeri a 3 cifre può essere necessario diverse quantità di stoccaggio.
+1 Grazie per avermi introdotto alla funzione 'dump'! Mi aiuta nel debug di alcuni bug di Oracle (client library). –