개요
MEM_MAX_DB_SIZE에 대한 내용 확인 및 변경방법에 대해 알아 봅니다.
대상버전
- Altibase 전체 버전
설명
- 물리 메모리에 저장되는 메모리 테이블스페이스(메모리 테이블 또는 메모리 데이터)로 사용할 수 있는 최대 메모리 크기를 의미합니다.
- 모든 메모리 테이블스페이스를 합한 전체 사용량에 대한 제약입니다.
- 메모리 테이블스페이스 각각이 사용할 수 있는 최대 크기가 아닙니다.
- 메모리 테이블에 생성한 인덱스 크기는 포함되지 않습니다.
- 변경 트랜잭션 수행 시 발생하는 과거 데이터도 포함됩니다.
변경 트랜잭션이 수행될 경우 트랜잭션이 종료되기 전까지 과거 데이터를 유지하는데(MVCC기법), 메모리 테이블의 경우 메모리 테이블 내에 레코드의 복제본을 생성합니다. - 메모리 테이블스페이스 생성 시 최대값을 지정하지 않으면 MEM_MAX_DB_SIZE 설정 값만큼 자동 확장됩니다.
고려사항
현재 값 보다 크게 설정하고자 할 때
MEM_MAX_DB_SIZE 를 현재 값보다 크게 설정하고자 할 때 고려해야 할 부분에 대해 설명합니다
최대 값
- 물리 메모리의 약 60~70% 정도로 설정할 것을 권장합니다.
- 메모리 데이터 뿐 아니라 변경 트랜잭션 수행 시 MVCC 기법에 의해 생성될 레코드 복제본 크기도 고려해야 합니다.
예를 들어, 1G짜리 메모리 테이블에 변경 트랜잭션이 발생한 경우 트랜잭션이 완료된 시점에는 해당 테이블의 크기는 2G 가 될 수 있습니다. - 메모리는 알티베이스 서버 프로세스 뿐 아니라 OS 및 다른 프로세스에서도 사용해야 할 공유 자원이기 때문에 물리 메모리보다 작게 설정해야 합니다.
- 물리 메모리보다 크게 MEM_MAX_DB_SIZE를 설정할 수는 있지만 물리 메모리를 초과하여 메모리가 사용될 경우 swap in/out 발생으로 성능 저하 및 시스템에 다양한 문제가 발생할 수 있습니다.
디스크 공간
- 메모리 테이블스페이스는 백업 용도로 두 벌의 '메모리 체크포인트 이미지 파일'을 디스크에 저장합니다. 그래서 메모리 데이터 사용량보다 보다 두 배의 디스크 공간이 필요합니다.
- MEM_MAX_DB_SIZE 를 크게 설정하면 디스크 사용량도 증가하므로 MEM_MAX_DB_SIZE 변경 전에 디스크 공간을 여유있게 확보해야 합니다.
예) MEM_MAX_DB_SIZE 가 60G 일 경우, 120G 의 디스크 공간이 필요.
사용자 환경 설정 (Linux/Unix)
- ulimit -a 로 수행하여 아래 설정들이 OS 에서 허용하는 최대 값으로 설정되어 있는 지 확인해야 합니다.
max memory size / virtual memory
- ulimit -a 로 수행하여 아래 설정들이 OS 에서 허용하는 최대 값으로 설정되어 있는 지 확인해야 합니다.
커널 파라미터(AIX, HP-UX)
- AIX 경우 /etc/security/limits 파일 내용에서 data, rss, fsize등에 대해서 -1로 설정이 되어 있는지 확인합니다.
- HP의 경우 kctune을 통해 maxdsiz_64bit 값이 충분히 크게 설정 되어 있는지 확인합니다.
- Linux, SunOS 는 해당 없습니다.
현재 값 보다 작게 설정하고자 할 때
MEM_MAX_DB_SIZE 를 현재 값보다 작게 설정하고자 할 때 고려해야 할 부분에 대해 설명합니다.
- MEM_MAX_DB_SIZE 는 무조건 작게 설정할 수 없습니다.
증가한 '체크포인트 이미지 파일' 크기를 확인한 후 그보다 크게 설정해야 합니다.
아래 문장으로 그 크기를 확인할 수 있습니다.TOTAL 이 MAX 보다 작다면 TOTAL 보다는 크면서 기존 값보다는 작게 MEM_MAX_DB_SIZE 를 설정합니다.
DB재구동
- MEM_MAX_DB_SIZE 의 값을 변경하기 위해서는 Altibase를 재구동해야만 합니다.
- 운용중 property를 동적으로 변경 할 수 없습니다. (서비스 중단이 필요합니다)
절차
변경절차
알티베이스 서버 중지
altibase.properties 파일 변경
알티베이스 서버 프로퍼티 파일($ALTIBASE_HOME/conf/altibase.properties) 에서 MEM_MAX_DB_SIZE 를 변경 후 저장합니다.
알티베이스 서버 구동
발생 가능 에러 메세지
[FAILURE] The size of the DB file(SYS_TBS_MEM_DATA-숫자-숫자) exceeds the size specified in the MEM_MAX_DB_SIZE property.
[원인]
MEM_MAX_DB_SIZE를 증가한 '체크포인트 이미지 파일' 크기보다 작게 설정할 경우, 구동시(startup) 에러가 발생할 수 있습니다
[해결방법]
MEM_MAX_DB_SIZE를 증가한 '체크포인트 이미지 파일' 크기보다 크게 설정해야 합니다.
확인절차
아래 쿼리로 확인 가능합니다.
참고