Skip to end of metadata
Go to start of metadata

 

 

개요  


본 문서는 Altibase의 효과적인 사용을 위해 altibase.properties 파일 내의 속성들을 설명하고 어떻게 값을 지정할 수 있는지 설명한다.

본 문서에서는 Hidden property에 대한 설명은 포함하고 있지 않다.

본 문서는 Altibase 7.1.0, Altibase 7.3.0 을 기준으로 작성되었다. 사용자는 아래 문서를 함께 참조하는 것을 권장한다.

  1. 『Altibase 운영을 위한 시스템 리소스 용량산정 가이드』
  2. 『효율적인 Altibase 이중화 구성 가이드』

 

 

Icon

이 문서와 관련된 오류 및 개선사항은 기술지원포털 또는 기술지원센터로 문의주시기 바랍니다.

Icon

이 문서는 정보 제공을 목적으로 제공되며, 사전에 예고 없이 변경될 수 있습니다. 이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 책임이 일절 없습니다.

이 문서에 포함된 Altibase 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 재량입니다.

Altibase는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다.

 

 

Altibase 설정 항목 


Altibase의 각 버전별 프로퍼티에 대한 자세한 설명은 Altibase 버전별 General Reference편을 참고할 수 있다.

Altibase 버전별 매뉴얼은 아래 링크를 참고 한다.

URL : http://support.altibase.com/kr/manual

 

프로퍼티 조회 및 설정  


각 프로퍼티는 다음과 같이 조회할 수 있다.

또는, $ALTIBASE_HOME/conf/altibase.properties 파일에서 조회가 가능하다. 다만, 파일을 통한 조회에서는 일부 숨겨 진 속성 값들은 알 수 없고 현재 적용된 값을 정확히 조회하기 위해서는 위와 같은 SQL을 통한 조회를 권장한다.

각 속성값의 변경은 설정 파일에 기술하거나 또는 DCL문(ALTER SYSTEM/ALTER SESSION 구문)을 통해 실시간 변경이 가능하다. 일부 속성은 읽기전용 값으로 운영 단계에서 변경할 수 없는 것들도 존재한다. 그런 속성을 변경할 경우 아래와 같은 오류가 발생한다.

 

설정 파일에 속성을 변경하는 경우는 다음과 같은 형식을 취한다.

 

예를 들어 DCL을 통해 변경할 경우는 다음과 같이 수행 한다. (대/소문자 구분 없음)

DCL의 경우는 세션 레벨과 시스템 레벨로 나뉘어 변경이 가능한 항목들이 존재한다. 그러나 2가지 경우 모두 Altibase를 재 구동 한 경우에는 설정 파일에 기술된 값으로 재설정 되기 때문에 영구적으로 반영하고자 할 경우에는 설정 파일(altibase.properties)을 변경해야 한다.

(DB를 한번 생성한 후 변경할 수 없는 항목은 문서 후반에 소개한다.)

 

각 프로퍼티에서 "?" 표기의 의미는 "$ALTIBASE_HOME"이라는 환경변수에 정의된 경로를 의미한다.


 

Altibase 설정 권고


$ALTIBASE_HOME/conf/altibase.properties 파일에 기술된 각 항목을 각 분류 별로 정리하여 권고안에 대해 설명한다. 사용자의 시스템은 매우 다양한 환경을 갖기 때문에 본 권고안은 일반적인 경험에 의거하여 권고된다. 따라서, 설정 파일의 변경 및 적용은 Altibase 엔지니어와 충분한 사전 협의를 통해 진행할 것을 권고한다.

 

DB생성 시점에 최소 수정 해야 하는 프로퍼티 


DB를 생성하는 시점에 사용자가 최소한 설정해야 하는 항목은 다음과 같다. 설명의 이해를 위해 디스크의 볼륨이 다음과 같이 구성되었다고 가정한다.

디스크 볼륨설명
/home/altibaseAltibase가 설치된 경로
/home/altidata데이터 파일이 저장될 디렉토리
/home/altilog트랜잭션 로그 파일이 저장될 디렉토리

 

위의 볼륨 구성으로 가정할 경우 아래와 같이 예를 들어 설정할 수 있다.

설정 항목기본 값설명
DB_NAMEmydb사용자가 임의의 이름으로 설정

MEM_DB_DIR

?/dbs

/home/altidata

DEFAULT_DISK_DB_DIR

?/dbs

/home/altidata

LOGANCHOR_DIR

?/logs

/home/altilog

LOG_DIR

?/logs/home/altilog

ARCHIVE_DIR

?/arch_logs

아카이브 모드로 설정했을 경우 백업 디렉토리를 지정할 것을 권장한다. (ex: /home/altibackup/arch_log)

MEM_MAX_DB_SIZE

2G

용량 산정을 통해 예측한 크기로 설정한다. (ex : 8G)

BUFFER_AREA_SIZE

128M디스크 테이블을 사용할 경우 버퍼의 크기는 성능과 밀접한 연관이 있음으로 가용한 물리적 메모리 범위 내에서 크게 설정하도록 한다. 1G 이상을 권장한다.

PORT_NO

2030020300 과 같이 시스템 내에 다른 프로세스가 사용 중이지 않는 포트를 지정하도록 한다.

AUTO_COMMIT

11로 설정한 경우 DML수행 후 자동으로 DB에 반영되기 때문에 만일, 사용자가 직접 제어하고자 할 경우에는 0으로 설정하도록 한다.

SQL_PLAN_CACHE

64MSQL 플랜 캐시의 최대 크기를 나타낸다. 중복되는 SQL이 많을 수록 SQL 플랜 캐시는 메모리 절약 효과가 있다.
REPLICATION_PORT_NO0이중화 사용이 필요시에 포트를 지정하도록 한다.


DB생성 이후 변경할 수 없는 프로퍼티 


 Altibase를 한번 생성한 이후 최초 설정한 값에서 어떤 형태로든 변경할 경우  Altibase가 재 구동이 안 되는 몇 가지 프로퍼티가 존재한다. 따라서, 이 프로퍼티는 최초에 설정할 때 신중하게 설정하는 것을 권고한다.

설정 항목기본값
DB_NAMEmydb (생성 시 지정)

LOG_FILE_SIZE

10M (생성 시 지정)

EXPAND_CHUNK_PAGE_COUNT

128 (생성 시 지정)

TRANSACTION_TABLE_SIZE

1024 (상향 조절만 가능)
CHARACTERSETDB 생성 시점에 지정
NATIONAL CHARACTERSETDB 생성 시점에 지정

이 프로퍼티를 변경하기 위해서는 전체 데이터에 대한 마이그레이션 즉, 새롭게 DB를 재 생성 해야 하는 작업을 수행해야만 한다.

 

파일 경로 설정 프로퍼티


이 단락에서 파일은 트랜잭션 로그 파일과 데이터 파일에 대한 경로 설정만을 다룬다. 일반적으로 하나의 디스크에 트랜잭션 로그 파일과 데이터 파일을 같은 디스크를 사용하도록 지정할 경우 동시다발적인 디스크I/O로 인한 성능 저하가 발생하기 때문에 다음의 문서를 참고로 각각의 설정 항목을 변경하는 것을 권고한다.

참고 문서 『 Altibase 디스크I/O 병목을 고려한 볼륨구성 가이드』

설정 항목기본 값설명
LOG_DIR?/logs트랜잭션 로그파일이 생성되는 디렉토리
MEM_DB_DIR?/dbs사용자가 명시적으로 지정하지 않을 경우 메모리DB의 데이터 파일이 생성되는 디렉토리
DEFAULT_DISK_DB_DIR?/dbs사용자가 명시적으로 지정하지 않을 경우 디스크DB의 데이터 파일이 생성되는 디렉토리

위 3개의 경로 및 향후에 사용자가 생성할 각각의 데이터 파일들은 최소한 LOG_DIR과는 물리적으로 분리된 디스크를 사용하도록 권고한다.

 

세션 프로퍼티


세션과 관련된 프로퍼티는 다음 항목들이다.

설정 항목기본 값설명
MAX_CLIENT1000동시에 DB에 접속할 세션의 제한이기 때문에 만일 이 값보다 더 많이 세션이 접속할 것이 예상되면 이 값을 늘린 후  Altibase 서버를 재 구동 하도록 한다.
MULTIPLEXING_THREAD_COUNT호스트 장비의 논리 코어 수이 값은 서비스 쓰레드의 개수를 지정하는 것이다. 설정하지 않을 경우 CPU의 Core수만큼 쓰레드가 자동으로 구동 단계에서 생성된다. 만일, 접속한 세션들이 많아 서비스 쓰레드가 더 필요하다고 내부적으로 판단할 경우 자동으로 생성이 되지만 생성되는 시점에 태스크의 분배로 일시적인 성능의 지터 현상이 발생할 수 있음으로 미리 충분한 개수를 확보 하는 것도 의미 있는 설정일 수 있다.

MULTIPLEXING_THREAD_COUNT 는 기본적으로 (CPU Core개수 * 2)정도의 수치를 권고하는데 이 값은 상황에 맞게 설정한다

 

리소스 제한 관련 프로퍼티


 Altibase가 사용하는 리소스(Resource)라 함은 물리적인 메모리/디스크의 공간 및 논리적인 테이블스페이스 공간과 같은 자원을 의미한다. 세션/시스템 레벨에서 대량의 변경 작업과 같이 리소스 부족을 유발할 수 있는 질의 수행을 유연하게 제한하는 각각의 프로퍼티를 설명한다.

이 프로퍼티는 기본 설정을 변경하기 보다는 세션 레벨에서의 설정 변경을 통해 필요가 있는 세션만 변경/적용하도록 운영하는 것을 권고한다.

설정 항목기본 값설명

LOCK_ESCALATION_MEMORY_SIZE

100M

메모리DB 테이블에 대량 변경 작업을 수행할 경우 변경되는 레코드의 크기가 이 속성값을 넘으면 테이블 락을 획득하여 질의를 수행한다. (시스템 레벨만 변경 가능)

TRX_UPDATE_MAX_LOGSIZE

10M

질의 처리로 인해 발생하는 트랜잭션 로그의 양이 이 속성값 이상이면 다음과 같은 에러로 리턴 된다.

The update log size '10485873' is bigger than TRX_UPDATE_MAX_LOGSIZE '10485760'

PREPARE_STMT_MEMORY_MAXIMUM

200M

질의 처리 수행 단계 중 Preapre단계에서 사용되는 메모리의 양이 이 속성값 이상이면 다음과 같은 에러로 리턴 된다.

The memory size allocated for the statement has exceeded the maximum limit ( Name : Query_Prepare, Wanted Memory Size : 1073741832, Max size : 1073741824 )

EXECUTE_STMT_MEMORY_MAXIMUM

v7.1.0 : 1024M

v7.3.0 : 2048M

질의 처리 수행 단계 중 Execute단계에서 사용되는 메모리의 양이 이 속성값 이상이면 다음과 같은 에러로 리턴 된다.

The memory size allocated for the statement has exceeded the maximum limit ( Name : Query_Execute, Wanted Memory Size : 1073807360, Max size : 1073741824 )

QUERY_TIMEOUT

600초

질의를 개시한 이후 시간이 이 속성값 이상 지나면 다음과 같은 에러로 리턴 한다.

Client's query exceeded the execution time limit.

FETCH_TIMEOUT

60초

질의가 정상 수행된 이후 만들어 진 결과 셋을 주고 받는 과정에서 이전 통신과 다음 통신간에 이 속성값만큼 시간이 지나도 통신이 발생하지 않으면 해당 세션을 종료시킨다.

The session has been closed by the server

UTRANS_TIMEOUT

3600초

변경 질의가 수행된 이후 Commit/Rollback의 수행이 이 속성값만큼 시간이 지나도 발생하지 않으면 해당 세션을 종료시킨다.

The transaction has exceeded the lock timeout specified by the user.

IDLE_TIMEOUT0

세션이 아무런 동작 없이 이 속성값만큼 유지되면 강제로 종료시킨다.

The session has been closed by the server

 

일시적인 변경 방법의 예 아래와 같다.

  • 세션과 관련된 QUERY/IDLE/UTRANS/FETCH Timeout 속성과 관련된 에러는 모두 altibase_boot.log에 기록되기 때문에 발생 시 해당 세션을 찾아 조치하도록 한다.
  • ALTER SYSTEM과 ALTER SESSION은 주의할 사항이 ALTER SYSTEM의 변경은 이후 접속하는 세션부터 적용된다. 따라서, 현재 접속한 세션은 적용되지 않기 때문에 개별 접속된 세션들에 대해서는 각각 ALTER SESSION을 수행해야 원하는 결과를 적용할 수 있다.

 

디스크 I/O 성능 관련 프로퍼티


 Altibase의 디스크 I/O 성능 관련된 프로퍼티 항목을 설명한다.

설정 항목기본 값설명

BUFFER_AREA_SIZE

128M

디스크DB의 버퍼 크기를 지정한다. 시스템의 메모리가 여유 있다면 가능한 크게 설정하기를 권고한다.

BUFFER_FLUSHER_CNT

2

디스크DB의 더티페이지 또는 버퍼의 빈 공간을 확보하기 위해 디스크에 버퍼를 기록하는 쓰레드로 시스템의 CPU개수 또는 디스크I/O성능에 맞게 조절하도록 한다.

PREPARE_LOG_FILE_COUNT

5

별도의 쓰레드가 트랜잭션 로그를 기록할 빈 로그파일을 생성하게 되는데 이 값이 너무 작은 경우 트랜잭션 진행이 빈 로그파일 생성을 대기해야 할 경우 성능이 저하될 수 있음으로 v$lfg 의 LF_PREPARE_WAIT_COUNT 값이 이 값보다 크게 나타나는 경우 값을 적절하게 조정해야 한다. 너무 크게 잡는다 하여도 실제 빈 로그파일을 만드는 디스크I/O 부하가 발생할 것임으로 테스트를 통해 신중하게 변경할 것을 권고한다.

CHECKPOINT_BULK_WRITE_PAGE_COUNT

0

메모리 DB의 체크포인트가 진행될 때 기록해야 할 페이지가 많아 이 때 발생하는 디스크I/O로 성능이 저하된다고 판단이 될 경우 이 속성값을 통해 체크포인트의 디스크I/O양을 분산시킬 수 있다. 즉, CHECKPOINT_BULK_WRITE_PAGE_COUNT에 지정된 값만큼 페이지를 기록한 이후 (CHECKPOINT_BULK_WRITE_SLEEP_SEC + CHECKPOINT_BULK_WRITE_SLEEP_USEC) 만큼 대기한 이후 다시 쓰기를 진행하도록 동작한다. 이 속성은 디스크 성능이 낮은 장비에서 효과를 거둘 수 있다.

CHECKPOINT_BULK_WRITE_SLEEP_SEC0초
CHECKPOINT_BULK_WRITE_SLEEP_USEC0마이크로초

DIRECT_IO_ENABLED

1파일캐쉬를 거쳐 데이터파일에 기록하는 과정은 2번에 걸친(파일캐쉬, 디스크Sync) 디스크 쓰기와 언제 파일캐쉬에서 디스크로 Sync될지를 예측하기 어려운 경우가 있을 수 있다. 그로 인해 운영체제가 파일캐쉬를 비우는 시점에 예측하지 못한 성능 저하가 있을 수 있는데 DIRECT IO로 설정할 경우 한번의 쓰기로 완료가 가능하다. 단, 이 설정은 디스크 성능이 충분히 높은 경우에만 설정할 것을 권고한다.
DATABASE_IO_TYPE0

TOTAL_WA_SIZE

128M

디스크DB의 정렬 또는 해싱 작업이 동시에 수행 될수 있기위해  할당할 수 있는 메모리의 최대 크기를 지정한다. (TOTAL_WA_SIZE)
SORT_AREA_SIZE와 HASH_AREA_SIZE를 적절히 높히면 디스크DB의 성능이 향상 될 수 있다.

SORT_AREA_SIZE1M
HASH_AREA_SIZE4M


PBT(Problem Tracking) 관련 프로퍼티


 Altibase의 문제 상황이 발생할 경우 상세하게 추적하기 위해 필요한 프로퍼티를 설명한다.

설정 항목기본 값설명

QP_MSGLOG_FLAG

2

2로 설정하면 모든 DDL수행 기록을 확인할 수 있음으로 문제 발생 시 DDL수행에 의거한 경우 분석에 도움이 될 수 있다.

RP_CONFLICT_MSGLOG_FLAG06으로 설정하면 이중화 충돌 시 발생하는 DML의 로그가 기록되어 분석에 도움이 될 수 있다.
TIMED_STATISTICS0

기본값은 0으로 동작하지 않지만 성능과 관련한 각 SQL문들의 수행 시간들을 알아야 할 경우 다음과 같이 실시간으로 활성화 할 수 있다.

iSQL> ALTER SYSTEM SET timed_statistics = 1 ;

활성화 하면 수행되는 모든 SQL문의 수행 시각이 v$statement에 기록되기 시작한다.

 

 

 

Icon

2023.12 버전 : 202312_Altibase_설정_파일_가이드.pdf (Altibase 7.1.0, 7.3.0)

2010.03 버전 : 201003_ALTIBASE_설정_파일_가이드.pdf (Altibase 5.3)

 

 

 

 

  • No labels