티스토리 뷰
* 용량 산정방식
테이블 row 당 Byte길이합 * 일발생건수예상치 / (1024 kb) / (1024 mb) = 용랑(mb)
ex) A 테이블
컬럼 | 데이터타입 | 길이 |
age | varchar2 | 8 |
name | varchar2 | 12 |
테이블 row당 Byte기이 합 : 8+12
일발생건수 예상치 : 테이블에 들어가는 쿼리 결과의 행의 수 count
테이블 용량 산정
테이블의 평균 Row의 길이 = 평균 Row길이 + 3Byte(Row Header) + 테이블의 칼럼 갯수
이 공식의 평균 Row 길이는 다음과 같은 방식에 의해 속성 데이터 형별로 길이를 산정하고 이를 합함으로써 얻는데,
그값은 추정치입니다.
데이터타입 | 산정값 |
char | 산정한 길이를 그대로 인정 |
number, long raw |
산정한 길이 / 2 Number의 경우 Precision만 산정. 즉,Number(13,3)이면 13만인정 |
varchar2 |
(산정한 길이 / 2) + 1 대부분 문자형으로 char가 아닌 varchar2를 사용한다면 일정한 길이 이하인 경우 카럶의 산정한 길이를 그대로 사용하여야 할것입니다. 예로 20미만 길이는 그대로 사용하고 , 20이상의 경우 위공식을 사용할수 있습니다. |
data | 7 |
초기 크기 = 최대 건수 * 테이블의 평균 Row의 길이
증가 크기 = 초기 크기 * 20%
초기크기 :
1 디스크 공간의 여유에 따라 (초기건수 + 증가건수) 또는 최대건수를 테이블의 Row 개수로 인식하여
아래 계산 공식을 적용하여 계산
(ORACLE DB BLOCK SIZE: 2K로 가정)
SELECT GREATEST(4,(ORACLE DB BLOCK SIZE : 2K로 가정)
SELECT GREATEST(4, ceil(ROW_COUNT / ((round(((1958 - (initrans * 23)) *
((100 - PCT_FREE) /100)) / ADJ_ROW_SIZE)))) * 2) TableSize_Kbytes FROM dual;
한 개의 BLOCK에 Available 한 Bytes - 1958
각 Initrans 는 23 Bytes
PCT_FREE : 테이블의 Pctfree 값 (default 10)
ADJ_ROW_SIZE : 테이블 평균 Row 길이
ROW_COUNT : 테이블의 Row 개수
테이블 목록을 작성하기 위해서는 먼저 용량 산정이 수행되어야 합니다.
예로 회원 테이블에 대한 용량을 최대 건수가 50만 건으로 추출되었고
테이블의 평균 Row의 길이가 120 Byte 라는 전재 하에 초기 크기 = 최대 건수 * 테이블의 평균 Row의 길이
증가 크기 = 초기 크기 * 20%
와 같은 간단한 공식으로 구해보면 다음과 같습니다.
초기 크기 = 최대 건수(50만 건) * 길이(120 Byte)
= 60000000 byte / (1024*1024) = 57.2 M
≒ 60M
증가 크기 = 60M * 20%
= 12M
pctfree 15
pctused 60
pctincrease 0 or pctfree + pctused 100
참고 - http://blog.naver.com/PostView.nhn?blogId=okkk00&logNo=110108569817
'DB server > Oracle' 카테고리의 다른 글
Oracle 전체테이블, 컬럼조회(전체 데이터 수, 전체 컬럼 검색) (0) | 2019.05.09 |
---|---|
Oracle. 테이블 스페이스 조회 (0) | 2019.05.08 |