FAQ
알티베이스 DB 사이징 하는 방법
분류 운영/관리 등록일 2013-07-09 조회수 3621
omegaman 2005-09-01 209


알티베이스 DB 사이징 하는 방법
+++++++++++++++++++++++++++++++++++++++


요약
++++
메모리 테이블 사용시 table schema 와 예상 record count로
altibase가 필요로 하는 메모리용량을 산정하는 방법에 대해서 설명한다.


계산시 유의점
+++++++
알티베이스 레코드 사이즈 계산은 레코드 칼럼의 내부적인 정렬을 위한 오프셋
(offset)을 추가해야 하기때문에
단순히 각 칼럼의 데이타타입별 크기의 합으로 계산해서는 안됩니다.
보다 정확한 계산값을 산출하기 위해서는 알티베이스에 직접 테이블을 생성한후에 튜
플사이즈를 얻은후에 여기에 인덱스크기를 더해야 합니다.


계산하는 법
+++++++
1. 알티베이스에 해당 table schema를 직접 생성

2. size.sh 의 LIST 변수를 수정 ( 계산을 원하는 table 명을 추가한다 )
LIST="cnhpp_subs_info cnhpp_called_info"

3.
[omegaman@e450:/home2/omegaman] sh size.sh
iSQL> 2 3 TABLE_NAME REC_SIZE
---------------------------------------------------------
CNHPP_SUBS_INFO 48 <--- record size
1 row selected.
iSQL> iSQL> 2 3 TABLE_NAME REC_SIZE
---------------------------------------------------------
CNHPP_CALLED_INFO 72 <---- record size
1 row selected.
iSQL> [omegaman@e450:/home2/omegaman


4 위에서 얻은 레코드 size 에는 레코드별 인덱스크기가 포함되지 않은 값입니다.
altibase는 인덱스당 16byte를 필요로 합니다.

record별 메모리증가크기 = record_size + 16 * 인덱스갯수 (PK 포함)
ex ) cnhpp_called_info의 레코드별 메모리증가크기 = 72 + 16 * 3

위와 같은 단계로 계산하실 수 있습니다.

위의 계산은 단순히 레코드증가에 따른 크기만을 계산한 것으로
실제운영상황을 고려하려면

세션별 메모리사용량 , 시스템 여유분 등도 같이 계산에 추가해야 합니다.

세션별 메모리사용량 ( connection 당 추가로 필요로 하는 메모리) 는 1 connection
당 5M 정도이고
시스템여유분은 보정치로 1.5정도를 곱해서 계산합니다.

( ( 48 + 16 ) * n 레코드수 + ( 72 + 16 * 3 ) * n 레코드수 + 5M * connection
수 ) * 1.5 (보정치)
| |
( CNHPP_SUBS_INFO ) ( CNHPP_CALLED_INFO )

와 같은 식이 됩니다.

목록