programing

오라클 NUMBER(p) 스토리지 크기?

lastmoon 2023. 7. 1. 09:18
반응형

오라클 NUMBER(p) 스토리지 크기?

검색해봤는데 제 질문에 대한 결정적인 답을 찾을 수가 없네요...

오라클에서 숫자(p) 필드의 저장소 크기를 알아야 합니다.

예: NUMBER(1), NUMBER(3), NUMBER(8), NUMBER(10) 등...

사용되는 저장소는 실제 숫자 값뿐만 아니라 열의 정밀도 및 척도에 따라 달라집니다.

Oracle 11gR2 개념 가이드는 다음과 같이 설명합니다.

Oracle Database는 숫자 데이터를 가변 길이 형식으로 저장합니다.각 값은 과학적 표기법으로 저장되며 지수를 저장하는 데 1바이트가 사용됩니다.데이터베이스는 최대 20바이트를 사용하여 중요한 숫자를 포함하는 부동 소수점 번호의 일부인 가수를 저장합니다.Oracle Database에는 선행 및 후행 0이 저장되지 않습니다.

10gR2 가이드는 다음과 같습니다.

이를 고려하여 특정 숫자 데이터 값 NUMBER(p)에 대한 열 크기(p는 지정된 값의 정밀도)를 다음 공식을 사용하여 계산할 수 있습니다.

ROUND((length(p)+s)/2))+1

여기서 s는 숫자가 양수이면 0이고, s는 숫자가 음수이면 1입니다.

0, 양 및 음의 무한대(Version 5 Oracle 데이터베이스에서 가져올 때만 생성됨)는 고유한 표현을 사용하여 저장됩니다.0 및 음의 무한대에는 각각 1바이트가 필요하고 양의 무한대에는 2바이트가 필요합니다.

My Oracle Support에 액세스할 수 있는 경우 Note 1031902.6에 더 많은 정보가 있습니다.

또는함께 사용된 실제 저장소를 볼 수 있습니다.

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 

스토리지는 값에 따라 다릅니다. 모든 스토리지가 단일 스토리지에 포함되어 있더라도number(10)두 개의 세 자리 숫자가 서로 다른 양의 저장 공간을 필요로 할 수 있습니다.

NUMBER  
999...(38 9's) x10125 
maximum value   Can be represented to full 38-digit precision (the mantissa).

-999...(38 9's) x10125 
minimum value   Can be represented to full 38-digit precision (the mantissa).


Precision   38 significant digits    ==> NUMBER(38) is the max

여기를 참조하고 여기도 있을 수 있습니다.

numberOracle의 데이터 유형은 다음과 같은 가변 길이의 특수 데이터 유형입니다.varchar동일한 데이터를 저장하는 경우number(5)그리고.number(20)스토리지는 다음과 같이 열을 선언하는 것과 같습니다.varchar(100)그리고.varchar(200).

그래서 p 매개변수를 지정하기number(p,s)스토리지 크기에는 영향을 미치지 않으며 데이터에 대한 제약 조건만 적용합니다.그러나 s 모수를 지정하면 데이터를 반올림하여 크기를 줄일 수 있습니다.

숫자 데이터 유형의 최소 저장소 크기는 1바이트이고 최대 저장소 크기는 21바이트입니다.따라서 제약 조건을 적용하지 않으려면 다음을 사용합니다.number매개 변수가 없는 입니다. p 매개 변수가 없습니다.

언급URL : https://stackoverflow.com/questions/24240087/oracle-numberp-storage-size

반응형