----------------------------------------------------------------
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
'IT > Database' 카테고리의 다른 글
MSSQL 유지관리계획 백업 세팅방법 (0) | 2019.02.27 |
---|---|
[MSSQL] CPU 점유율 확인 쿼리 (0) | 2018.07.24 |
[MSSQL] SQL 버전 확인 쿼리 (0) | 2018.07.11 |
[MSSQL]권한 및 테이블 복사, 업데이트(Update) Query (0) | 2018.07.09 |
[MSSQL] sqlcmd 활용하기. (0) | 2018.07.06 |
관계형 데이터 모델 (0) | 2018.05.18 |
[Oracle] MSSQL을 Oracle로 컨버전 작업 시 참조 (0) | 2018.04.30 |
[MSSQL] MS-SQL 달력만들기 SQL 문 (0) | 2018.04.27 |