본문 바로가기

IT/Database

TABLE SIZE 계산 공식


----------------------------------------------------------------

TABLE SIZE 계산 공식(ORACLE BLOCK SIZE : 2K(2048 bytes) 로 가정)

----------------------------------------------------------------

$ sqlplus scott/tiger

SQL> SELECT   GREATEST(4, ceil(ROW_COUNT /

              ((round(((1958 - (initrans * 23)) *

              ((100 - PCTFREE) /100)) / ADJ_ROW_SIZE)))) * BLOCK_SIZE)

              TableSize_Kbytes

     FROM dual;

 

*. 한 개의 BLOCK Available Bytes - 1958

*. initrans 23 Bytes

*. PCT_FREE : Table pctfree (default 10)

*. ADJ_ROW_SIZE : row 의 평균 SIZE 추정치

*. ROW_COUNT : table row 의 갯수

*. BLOCK_SIZE : 1 block의 크기 (단위: K)

 

) table 이름이 EMP 일 경우

 

ROW_COUNT : select count(*) from emp;

 

ADJ_ROW_SIZE : analyze table emp compute statistics;

               (또는 건수가 매우 많을 때에는 compute 대신 estimate 사용)

                select avg_row_len

               from user_tables

               where table_name='EMP';

 

   

 

---------------------

INDEX SIZE 계산 공식

---------------------

SQL> SELECT   GREATEST(4, (1.01) * ((ROW_COUNT /

              ((floor(((2048 - 113 - (initrans * 23)) *

              (1 - (PCTFREE/100))) /

              ((10 + uniqueness) + number_col_index +

              (total_col_length)))))) * DB_BLOCK_SIZE))

              IndexSize_Kbytes

     FROM dual;

 

*. 한 개의 block available bytes ( 1935 or 2048 - 113 )

*. initrans 23 Bytes

*. ROW_COUNT : table row 의 갯수

*. PCTFREE : Index pctfree (default 10)

*. number_col_index : Index 에서 column 의 수

*. total_col_length : Index 의 길이 추정치

*. uniqueness : 만일 unique index 이면 1, non-unique index 이면 0.

*. DB_BLOCK_SIZE : 1 block의 크기 (단위: K)



출처: http://devworld.co.kr