FAQ
데이타 유형별 차지하는 메모리 크기
분류 운영/관리 등록일 2013-07-09 조회수 3897
msjung 2004-02-19 183


데이타 유형별 차지하는 메모리 크기
+++++++++++++++++++++++++++++++++++++++


요약
++++
알티베이스3에서 각 data type별로 사용하는 메모리 공간에 관한 내용입니다.


데이타 타입별 사용공간 계산하는 방법
++++++++++++++++++++++++++++++++++++

데이타 타입 실제 길이 align 크기
-------------------------------------------------------------
char 2 + 선언된길이 2
varchar 2
(variable) 32 + 2+ 실제길이

smallint 2 2
integer 4 4
bigint 8 8

numeric(=decimal) 21 (2+p/2 + p%2||s%2?1:0) 없음
number 22 없음
float 22 (2 + (p+2) / 2) 없음

real 4 4
double 8 8

date 12 4
blob 4 + 선언된 길이 4
hss_nibble 1 + (precision + 1) / 2 2
hss_bytes 선언된 길이 4

레코드 크기 계산 방법
+++++++++++++++++++++
각 레코드는 <레코드 헤더, 칼럼 데이타들>로 구성되며
전체 레코드 길이는 8바이트 align된 크기를 가진다.

각 데이타 타입 별로 align되는 크기가 다르므로
레코드 길이 계산시 이 부분도 고려해야 한다.

ex)
create table t1 (
c1 char(1),
c2 bigint,
c3 smallint,
c4 date);
===> 24 + 3 + 8 + 2 + 12 = 49 ==> X
24 + 8 + 8 + 4 + 12 = 56 ==> O

레코드 길이 검사 관련 SQL문
+++++++++++++++++++++++++++
(1) 테이블이 각 칼럼별 오프셋과 길이 출력
select a.column_name, a.offset, a.size
from system_.sys_columns_ a, system_.sys_tables_ b
where b.table_name='T1' and a.table_id=b.table_id;

(2) 모든 테이블의 레코드 길이 출력(variable record size는 제외됨)
select b.table_name, a.slot_size
from system_.sysx_fixed_page_memory_ a, system_.sys_tables_ b
where a.table_oid=b.table_oid;


목록