콘텐츠로 이동

성능 관련 프로퍼티#

AGER_WAIT_MAXIMUM (단위: 마이크로초)#

데이터 타입#

Unsigned Integer

기본값#

1000000

속성#

읽기 전용, 단일 값

값의 범위#

[0, 232-1]

설명#

가비지 콜렉터(garbage collector, 혹은 Ager) 관련 쓰레드들이 가비지 콜렉터 sleep 시, 시스템 호출인 sleep의 과도한 사용으로 인하여 (특히, HP 시스템) 발생하는 서버의 성능 저하를 막기 위한 것이다. 이 값들을 이용하여 서버 운영 중에 가비지 콜렉터 sleep time을 적절히 조절할 수 있도록 한다.

AGER_WAIT_MINIMUM (단위: 마이크로초)#

데이터 타입#

Unsigned Integer

기본값#

200000

속성#

읽기 전용, 단일 값

값의 범위#

[0, 232-1]

설명#

가비지 콜렉터(garbage collector, 혹은 Ager) 관련 쓰레드들이 가비지 콜렉터 sleep 시 시스템 호출인 sleep의 과도한 사용으로 인하여 (특히, HP 시스템) 발생하는 서버의 성능 저하를 막기 위한 것이다. 이 값들을 이용하여 서버 운영 중에 가비지 콜렉터 sleep time을 적절히 조절할 수 있도록 한다.

BUFFER_VICTIM_SEARCH_INTERVAL (단위: 밀리초)#

데이터 타입#

Unsigned Integer

기본값#

3000

속성#

변경 가능, 단일 값

값의 범위#

[0, 86400000]

설명#

이 프로퍼티는 버퍼 교체 대상 검색이 실패한 후 플러셔가 플러시 작업을 할 것을 기다리는 시간을 명시한다. 이 시간을 대기하여도 교체 대상 버퍼를 찾지 못하면, V$BUFFPOOL_STAT 성능 뷰의 VICTIM_SEARCH_WARP의 값이 증가한다.

BUFFER_VICTIM_SEARCH_PCT(단위: 백분율)#

데이터 타입#

Unsigned Integer

기본값#

5

속성#

변경 가능, 단일 값

값의 범위#

[0, 100]

설명#

버퍼 교체 대상을 LRU 리스트에서 검색할 때 얼마나 탐색할 것인지를 명시한다. 이 프로퍼티는 하나의 LRU 리스트 전체를 100이라고 할 때, LRU Cold last를 기준으로 명시한 값의 퍼센트만큼 검색하는 것을 나타낸다.

CHECKPOINT_BULK_SYNC_PAGE_COUNT (단위: 페이지 개수)#

데이터 타입#

Unsigned Integer

기본값#

3200

속성#

변경 가능, 단일 값

값의 범위#

[0, 232-1]

설명#

체크포인트를 할 때 메모리와 디스크의 데이터를 일치시키기 위해 한 번에 몇 개의 페이지 단위로 내용을 일치시킬 것인지를 나타낸다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

CHECKPOINT_BULK_WRITE_PAGE_COUNT (단위: 개수)#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 232-1]

설명#

체크포인트시 메모리의 더티 페이지들을 여러 번에 나눠서 디스크로 저장할 수 있다. 이 때 이 프로퍼티를 사용해서 한 번에 저장할 수 있는 더티 페이지의 개수를 설정할 수 있다. 이 값이 0일 때는 한 번에 모든 더티 페이지가 디스크 데이터베이스로 저장될 것이다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

CHECKPOINT_BULK_WRITE_SLEEP_SEC (단위: 초)#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 2592000]

설명#

CHECKPOINT_BULK_WRITE_PAGE_COUNT의 값이 0이 아닐 때 더티 페이지들을 디스크로 저장 후 대기하는 시간(초)을 나타낸다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

CHECKPOINT_BULK_WRITE_SLEEP_USEC (단위: 마이크로초)#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 60000000]

설명#

CHECKPOINT_BULK_WRITE_PAGE_COUNT의 값이 0이 아닐 때 더티 페이지들을 디스크로 저장 후 대기하는 시간(마이크로초)을 나타낸다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

CHECKPOINT_FLUSH_COUNT (단위: 프레임 개수)#

데이터 타입#

Unsigned Integer

기본값#

64

속성#

변경 가능, 단일 값

값의 범위#

[1, 264-1]

설명#

플러셔가 한 번의 주기에서 체크포인트 플러시를 할 때 플러시 할 수 있는 버퍼 페이지(프레임)의 개수를 명시한다.

CHECKPOINT_FLUSH_MAX_GAP (단위: 로그 파일 개수)#

데이터 타입#

Unsigned Integer

기본값#

10

속성#

변경 가능, 단일 값

값의 범위#

[0, 232-1]

설명#

체크포인트 플러시를 발생시키는 조건 중의 하나가 된다. 체크포인트 리스트에 있는 갱신된 버퍼들 중에 갱신 LSN(recovery LSN)이 가장 작은 값과 현재 로그 LSN과의 차이가 이 프로퍼티에서 지정한 값이 되면 체크포인트 플러시를 수행한다.

이 값은 서버 재구동시의 복구 시간을 결정한다. 이 값이 클수록 체크포인트 플러시가 적게 발생하며, 서버의 재구동시 복구 시간은 길어진다. 서버 운영 중에도 변경이 가능하다.

CHECKPOINT_FLUSH_MAX_WAIT_SEC (단위: 초)#

데이터 타입#

Unsigned Integer

기본값#

10

속성#

변경 가능, 단일 값

값의 범위#

[0, 232-1]

설명#

체크포인트 플러시를 발생시키는 조건 중의 하나이다. 마지막 플러시 작업이 끝난 이후 이 프로퍼티에서 지정한 시간이 지나면 체크포인트 플러시가 발생한다.

CM_BUFFER_MAX_PENDING_LIST#

데이터 타입#

Unsigned Integer

기본값#

512

속성#

읽기 전용, 단일 값

값의 범위#

[1, 512]

설명#

메모리가 급격하게 증가하는 것을 방지하기 위해, 이 프로퍼티를 사용해서 한 세션에서 할당받을 수 있는 최대 통신 버퍼 블록의 수를 제한할 수 있다.

CM_DISPATCHER_SOCK_POLL_TYPE#

데이터 타입#

Unsigned Integer

기본값#

3

속성#

읽기 전용, 단일 값

값의 범위#

[1, 2, 3]

설명#

Altibase 서버의 디스패처(Dispatcher)에서 소켓 감지를 위한 시스템 콜을 선택하는 프로퍼티이다. 클라이언트의 동시 접속이 1,000개 이상일 때 POLL() 시스템 콜이 사용되면 성능 향상에 도움이 된다.

  • 1: SELECT() 시스템 콜
  • 2: POLL() 시스템 콜; 지원되는 운영시스템에서만 사용이 가능함
  • 3: EPOLL() 시스템 콜; 지원되는 운영시스템에서만 사용이 가능함

DATABASE_IO_TYPE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

데이터파일과 관련하여 디스크 I/O가 수행될 때, Direct I/O와 Buffered I/O 두 가지 방법이 사용될 수 있다. Direct I/O를 사용하기 위해서는 이 프로퍼티의 값을 1로 설정하며 Buffered I/O 를 사용하려면 0으로 설정한다.

Direct I/O는 디스크 I/O가 발생하는 동안 CPU 점유율을 줄인다는 장점이 있다. Buffered I/O는 read-ahead, asynchronous write 기법을 사용하므로 디스크 I/O 요구가 있을 때마다 실제로 디스크에 접근하지 않을 수도 있으므로 응용 프로그램 수준에서 볼 때 디스크 I/O가 훨씬 빠르다는 장점이 있다.

DATAFILE_WRITE_UNIT_SIZE (단위: 개수)#

데이터 타입#

Unsigned Long

기본값#

1024

속성#

변경 가능, 단일 값

값의 범위#

[1, 1024]

설명#

데이터 파일을 생성할 때 데이터의 기본 단위를 설정한다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

DB_FILE_MULTIPAGE_READ_COUNT#

데이터 타입#

Unsigned Integer

기본값#

8

속성#

변경 가능, 단일 값

값의 범위#

[1, 128]

설명#

디스크 테이블을 풀 스캔(Full Scan)할 때 이 값에 정해진 페이지 개수 단위로 IO를 수행한다.

이 때 디스크 테이블의 익스텐트 사이즈 즉 익스텐트 내의 페이지 개수가 여기에 명시한 값의 배수이면서 이 값보다 크면 MPR(Multi Page Read)을 한다.

그러나 여기에 명시한 값의 배수가 아니고, 이 값보다 작으면 SPR(Single Page Read)로 수행한다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

DEDICATED_THREAD_CHECK_INTERVAL (단위: 초)#

데이터 타입#

Unsigned Integer

기본값#

3600

속성#

읽기 전용, 단일 값

값의 범위#

[0, 264-1]

설명#

전용 쓰레드(Dedicated thread) 모드에서 서비스 쓰레드가 정리되는 시간 간격을 설정하는 프로퍼티이다. 이 프로퍼티는 DEDICATED_THREAD_MODE 프로퍼티가 1일 때에만 유효하다.

이 프로퍼티에 설정한 주기로 작업이 없는 서비스 쓰레드가 해제된다. 단, DEDICATED_THREAD_INIT_COUNT에 설정된 개수만큼의 서비스 쓰레드는 유지된다.

이 프로퍼티의 값이 0인 경우, 서비스 쓰레드가 정리되지 않는다.

DEDICATED_THREAD_INIT_COUNT#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

읽기 전용, 단일 값

값의 범위#

[0, 65535]

설명#

전용 쓰레드(Dedicated thread) 모드에서 초기에 생성할 서비스 쓰레드의 개수를 지정하는 프로퍼티이다. 이 프로퍼티는 DEDICATED_THREAD_MODE 프로퍼티가 1일 때에만 유효하다.

DEDICATED_THREAD_INIT_COUNT 값은 DEDICATED_THREAD_MAX_COUNT 프로퍼티에 설정한 값보다 작아야 한다.

DEDICATED_THREAD_MAX_COUNT#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

읽기 전용, 단일 값

값의 범위#

[0, 65535]

설명#

전용 쓰레드(Dedicated thread) 모드에서 최대로 생성할 수 있는 서비스 쓰레드의 개수를 지정하는 프로퍼티이다. 이 프로퍼티는 DEDICATED_THREAD_MODE 프로퍼티가 1일 때에만 유효하다.

초기에 생성된 서비스 쓰레드가 전부 클라이언트에 할당된 경우, 서비스 쓰레드의 개수는 DEDICATED_THREAD_MAX_COUNT까지 증가하게 된다.

DEDICATED_THREAD_MAX_COUNT 값은 MAX_CLIENT 프로퍼티에 설정한 값보다 작아야 한다.

DEDICATED_THREAD_MODE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

서비스 쓰레드가 클라이언트에 대해 전용 쓰레드(Dedicated thread) 모드로 동작할지 여부를 설정하는 프로퍼티이다.

1인 경우 전용 쓰레드 모드로 동작하고, 0인 경우 멀티플렉싱 쓰레드(Multiplexing thread) 모드로 동작한다.

DEFAULT_FLUSHER_WAIT_SEC (단위: 초)#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

변경 가능, 단일 값

값의 범위#

[1, 232-1]

설명#

플러셔의 최소 대기 시간을 명시한다. 플러셔는 특정 조건을 제외하고, 항상 이 시간만큼 대기 후 플러시 작업을 수행한다. 플러셔가 대기에서 풀려나 아무런 플러시를 하지 않는다면, 대기 시간은 1초씩 계속 늘어난다.

DELAYED_FLUSH_LIST_PCT (단위: 백분율)#

데이터 타입#

Unsigned Integer

기본값#

30

속성#

변경 가능, 단일 값

값의 범위#

[0, 100]

설명#

지연된 플러시 목록의 최대 비율을 명시한다. Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

DELAYED_FLUSH_PROTECTION_TIME_MSEC (단위: 밀리초)#

데이터 타입#

Unsigned Integer

기본값#

100

속성#

변경 가능, 단일 값

값의 범위#

[0, 100000]

설명#

최근에 사용된 Page로 판단하기 위한 기준 시간이다. 마지막으로 사용된 시간이 설정 값 이하라면 최근에 사용된 Page로 판단한다. Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

DIRECT_IO_ENABLED#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

데이터베이스를 디스크로 직접 입출력할 것인지 여부를 나타낸다.

0 : disable (직접 입출력하지 않음)

1 : enable (직접 입출력함)

DISK_INDEX_BUILD_MERGE_PAGE_COUNT (단위: 페이지 개수)#

데이터 타입#

Unsigned Integer

기본값#

128

속성#

변경 가능, 단일 값

값의 범위#

[2, 232-1]

설명#

하나의 디스크 인덱스를 CREATE INDEX 문으로 생성하거나 ALTER INDEX ~ REBUILD 문으로 재구축할 때, 디스크 인덱스 키정렬에 사용될 페이지 수를 설정한다. 디스크 인덱스 키들의 크기가 DISK_INDEX_BUILD_SORT_AREA_SIZE 보다 클 때 즉, 정해진 메모리 영역에서 모든 디스크 인덱스 키들을 정렬할 수 없을 때 사용된다.

디스크 I/O 발생으로 디스크 인덱스 생성(또는 재구축) 속도가 느려지면 이 프로퍼티의 값을 조정하여 디스크 인덱스 생성(또는 재구축) 속도를 높일 수 있다. 단, BUFFER_AREA_SIZE의 10% 이하로 설정할 것을 권고한다. BUFFER_AREA_SIZE는 디스크 인덱스 뿐 아니라 디스크 테이블에 접근하는 여러 트랜잭션에서 동시에 접근하는 메모리 영역이기 때문이다.

이 프로퍼티의 기본값은 BUFFER_AREA_SIZE 기본값의 약 1% 크기이다. 디스크 테이블 크기에 따라 BUFFER_AREA_SIZE를 조정할 때에 디스크 인덱스를 고려하여 이 프로퍼티 값도 적절하게 조정해야 한다.

이 프로퍼티는 ALTER SYSTEM 문으로 변경할 수 있다.

DISK_INDEX_BUILD_SORT_AREA_SIZE (단위: 바이트)#

데이터 타입#

Unsigned Long

기본값#

10MB

속성#

변경 가능, 단일 값

값의 범위#

[512KB, 264-1]

설명#

하나의 디스크 인덱스를 CREATE INDEX 문으로 생성하거나 ALTER INDEX ~ REBUILD 문으로 재구축할 때, 디스크 인덱스 키들을 정렬하는 용도로 사용할 최대 메모리 크기를 설정한다. 디스크 인덱스 키들의 크기만큼 메모리가 할당되며 필요한 때에 이 프로퍼티의 설정값만큼 증가한다. 디스크 인덱스를 생성(또는 재구축)하는 동안 할당된 메모리 크기는 V$MEMSTAT의 Storage_Disk_Index에서 확인할 수 있으며 동시에 생성(또는 재구축)하는 디스크 인덱스 수 * DISK_INDEX_BUILD_SORT_AREA_SIZE 만큼 메모리가 할당될 수 있다.

이 메모리는 디스크 인덱스 키들을 정렬하는 과정이 끝나면 바로 해제된다. 단, 디스크 인덱스 키들의 크기가 이 프로퍼티의 값보다 작으면, 다시 말하면 이 프로퍼티에서 정한 메모리 내에서 모든 디스크 인덱스 키들을 정렬하면 디스크 인덱스 생성(또는 재구축)을 완료할 때 메모리가 해제된다.

디스크 인덱스 생성(또는 재구축) 속도를 향상 해야 할 때 이 프로퍼티를 조정할 수 있다. 권고값은 INDEX_BUILD_THREAD_COUNT * 20MB이다.

이 프로퍼티는 ALTER SYSTEM 문으로 변경할 수 있다.

EXECUTE_STMT_MEMORY_MAXIMUM (단위: 바이트)#

데이터 타입#

Unsigned Long

기본값#

2147483648

속성#

변경 가능, 단일 값

값의 범위#

[1024*1024, 264-1]

설명#

하나의 질의문(statement)이 사용할 수 있는 execute 메모리의 양을 제한한다. 이 프로퍼티는 가동중에 ALTER SYSTEM 구문으로 변경 가능하다.

EXECUTOR_FAST_SIMPLE_QUERY#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 2]

설명#

이 프로퍼티는 단순한 DML 구문을 최적화하거나 Nested Loop Join을 사용하는 구문의 실행 계획을 최적화하여 성능을 향상시킬 수 있다. DA 모드에서 사용할 때 성능을 기대할 수 있으며, SIMPLE QUERY PLAN으로 실행되면 PLAN TREE에서 확인할 수 있다. 단 SIMPLE QUERY 최적화를 사용할 때에는 이전 동작과 같은 동작을 보장할 수 없으므로, 주의를 기울여야 한다.

0: SIMPLE QUERY PLAN을 사용하지 않는다.

1: SIMPLE QUERY PLAN을 MEMORY TABLE에 사용한다.

2: SIMPLE QUERY PLAN을 MEMORY PARTITION TABLE에 사용한다.

FAST_START_IO_TARGET (단위: 페이지 개수)#

데이터 타입#

Unsigned Long

기본값#

10000

속성#

변경 가능, 단일 값

값의 범위#

[1, 264-1]

설명#

서버를 재구동 단계에서 복구할 때 읽을 리두(Redo) 페이지의 개수를 명시한다.

운영중에 플러셔가 체크포인트 플러시를 할 때 버퍼에 남은 더티 페이지가 이 프로퍼티에서 지정한 페이지보다 많다면, 그 차이만큼 오래된 더티 페이지부터 디스크에 반영한다.

이 값은 서버 재구동시에 복구 시간을 결정해준다. 이 값이 작을수록 플러시할 페이지 수가 많아지기 때문에 서버를 재구동할 때 소요되는 복구 시간을 줄일 수 있다.

서버 운영중에 ALTER SYSTEM 문을 이용해 프로퍼티의 값을 변경할 수 있다.

FAST_START_LOGFILE_TARGET (단위: 로그 파일 개수)#

데이터 타입#

Unsigned Integer

기본값#

10

속성#

변경 가능, 단일 값

값의 범위#

[1, 232-1]

설명#

서버를 재구동하여 복구할 때 읽을 로그 파일의 개수를 명시한다.

운영중에 플러셔가 체크포인트 플러시를 할 때, 체크포인트 리스트에 있는 더티 페이지 중 페이지 LSN의 LogFileNo와 현재 로그 LSN의 LogFileNo와의 차이가 이 프로퍼티에서 지정한 값보다 크면 페이지를 플러시한다.

이 값은 서버를 재구동할 때 복구 시간을 결정한다. 이 값이 작을수록 플러시 할 페이지 수는 많아지기 때문에 서버를 재구동할 때 소요되는 복구 시간을 줄일 수 있다.

서버 운영중에 ALTER SYSTEM 문을 이용해 프로퍼티의 값을 변경할 수 있다.

FAST_UNLOCK_LOG_ALLOC_MUTEX#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

서버의 여러 쓰레드가 로그 버퍼에 동시에 접근할 수 있는지를 설정하는 프로퍼티이다. 이 프로퍼티의 값을 0으로 설정하면, 서버의 여러 쓰레드가 로그 버퍼에 순차적으로 접근할 수 있다. 그리고 이 값을 1로 설정하면, 서버의 쓰레드들이 로그 버퍼로 동시에 접근할 수 있다.

0: 동시 접근 불가능

1: 동시 접근 가능

HASH_AREA_SIZE (단위: 바이트)#

데이터 타입#

Unsigned Long

기본값#

4MB

속성#

변경 가능, 단일 값

값의 범위#

[3MB, 264-1]

설명#

서버가 해싱(hashing) 작업을 위해 사용하는 임시 테이블 하나의 메모리 크기를 지정한다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

HASH_JOIN_MEM_TEMP_AUTO_BUCKET_COUNT_DISABLE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

해쉬 조인(Hash Join)에 사용되는 메모리 해쉬 임시 테이블의 필요한 버킷(Bucket) 개수를 설정한다.

0 : 해쉬 테이블에 삽입된 실제 레코드 개수 ( DISTINCT 해싱방식에 의해 처리 되는 경우 /*+ HASH BUCKET COUNT () */ HINT로 HSDS 노드의 해시 버킷 수 지정 가능)

1 : 쿼리 옵티마이저가 예측한 버킷 개수 또는 힌트 /*+ HASH BUCKET COUNT () */로 지정된 버킷 개수

HASH_JOIN_MEM_TEMP_PARTITIONING_DISABLE프로퍼티의 값이 0(파티셔닝 방식)이면, 실제 레코드 개수에 기반하여 버킷 개수만큼 구역을 나누는 것이 효과적이다.

HASH_JOIN_MEM_TEMP_PARTITIONING_DISABLE프로퍼티의 값이 1(버킷 방식)이면, 이 프로퍼티의 값과 관계 없이 쿼리 옵티마이저가 예측하거나 힌트로 지정한 버킷 개수를 사용한다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

HASH_JOIN_MEM_TEMP_PARTITIONING_DISABLE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

해쉬 조인(Hash Join)에 사용되는 메모리 해쉬 임시 테이블의 레코드를 어떠한 방식으로 삽입하고 탐색할 것인지를 설정할 수 있다.

0 : 파티셔닝 방식

1 : 버킷 방식

파티셔닝 방식은 임시 공간에 삽입된 레코드의 개수를 기반으로 파티션 개수를 자동 설정하여 레코드를 파티션 단위로 탐색한다. 버킷 방식은 레코드를 버킷에 리스트 형태로 저장하여 버킷 단위로 레코드를 탐색하는 방식이다. 파티셔닝 방식을 사용할 경우 추가적인 메모리를 요구하지만, 대용량 데이터베이스를 사용할 때에는 버킷 방식보다 삽입 및 탐색 속도가 효과적이다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

HIGH_FLUSH_PCT (단위: 백분율)#

데이터 타입#

Unsigned Integer

기본값#

5

속성#

변경 가능, 단일 값

값의 범위#

[0, 100]

설명#

플러셔가 대기 상태에서 풀렸을 때 플러시 리스트의 길이가 전체 버퍼 크기에서 명시된 값 이상이 되면 교체 플러시를 수행한다. 이 때 해당되는 플러시 리스트의 모든 갱신된 버퍼들이 대기없이 연속적으로 플러시된다. 이 프로퍼티는 서버 운영중에 변경이 가능하다.

HOT_LIST_PCT (단위: 백분율)#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 100]

설명#

LRU 리스트 내에서 hot 영역의 비중을 명시한다. 이 프로퍼티는 서버 운영중에 변경이 가능하다.

HOT_TOUCH_CNT#

데이터 타입#

Unsigned Integer

기본값#

2

속성#

변경 가능, 단일 값

값의 범위#

[1, 232-1]

설명#

버퍼가 hot하다고 판단하는 접근 횟수의 기준을 명시한다. 이 속성에서 명시한 값 이상으로 버퍼에 접근되면 그 버퍼는 hot이라고 판단되며, hot 버퍼는 교체 대상 검색시 hot 리스트로 이동한다.

INDEX_BUILD_THREAD_COUNT#

데이터 타입#

Unsigned Integer

기본값#

물리 코어 수

속성#

변경 가능, 단일 값

값의 범위#

[1, 512]

설명#

실행시간(runtime)에 인덱스를 재구축(rebuilding)하는 과정에서 생성되는 인덱스를 구축(index build)하는 쓰레드의 개수를 조절한다.

주석으로 처리할 경우 기본값으로 시스템의 물리 코어 수(N) 만큼 병렬 작업 쓰레드가 생성된다.

INDEX_INITRANS (단위: 개수)#

데이터 타입#

Unsigned Integer

기본값#

8

속성#

읽기 전용, 단일 값

값의 범위#

[0, 50]

설명#

인덱스 페이지에 유지될 TTS(Touched Transaction Slots)의 초기 개수를 나타낸다.

INDEX_MAXTRANS (단위: 개수)#

데이터 타입#

Unsigned Integer

기본값#

50

속성#

읽기 전용, 단일 값

값의 범위#

[0, 50]

설명#

인덱스 페이지에 유지될 수 있는 TTS(Touched Transaction Slots)의 최대 개수를 나타낸다.

LFG_GROUP_COMMIT_INTERVAL_USEC (단위: 마이크로초)#

데이터 타입#

Unsigned Integer

기본값#

1000

속성#

읽기 전용, 단일 값

값의 범위#

[0, 232-1]

설명#

본 프로퍼티는 그룹 커밋 관련 프로퍼티이다.

트랜잭션 커밋을 위해 로그를 디스크에 기록하는 디스크 I/O를 수행한 마지막 시각을 가지고 있다. 이 시각을 기준으로 이 프로퍼티가 지정한 시간이 지난 후에 로그를 디스크에 기록하는 디스크 I/O가 수행된다.

이를 통해, 여러 트랜잭션이 동시 다발적으로 커밋하면서 요청하는 디스크 I/O가 한꺼번에 수행된다.

LFG_GROUP_COMMIT_RETRY_USEC (단위: 마이크로초)#

데이터 타입#

Unsigned Integer

기본값#

100

속성#

읽기 전용, 단일 값

값의 범위#

[0, 60000000]

설명#

본 프로퍼티는 그룹커밋 관련 프로퍼티이다.

마지막으로 로그 기록을 위한 디스크 I/O를 수행한 시각 이후로 LFG_GROUP_COMMIT_INTERVAL_USEC 만큼의 시간이 지나지 않은 경우, 커밋을 하려는 트랜잭션은 사용자가 이 프로퍼티에 지정한 값 만큼 기다린 후 디스크 I/O를 수행할 수 있는 충분한 시간이 지났는지를 다시 체크한다.

LFG_GROUP_COMMIT_UPDATE_TX_COUNT#

데이터 타입#

Unsigned Integer

기본값#

80

속성#

읽기 전용, 단일 값

값의 범위#

[0, 232-1]

설명#

본 프로퍼티는 그룹커밋 관련 프로퍼티이다.

데이터베이스에 변경(UPDATE)을 가한 트랜잭션의 수(V$LFG의 UPDATE_TX_COUNT 칼럼에서 조회 가능)가 이 값보다 크거나 같은 값이 되면 그룹 커밋이 활성화된다. 만약 이 프로퍼티가 0으로 설정되면 그룹커밋은 작동하지 않는다.

LOB_CACHE_THRESHOLD (단위: 바이트)#

데이터 타입#

Unsigned Integer

기본값#

8192

속성#

변경 가능, 단일 값

값의 범위#

[0, 524288]

설명#

클라이언트 LOB 캐시에 저장될 수 있는 LOB 데이터의 최대 크기를 지정하는 프로퍼티이다. 이 프로퍼티에 0보다 큰 값을 지정하면, 설정한 크기 이하의 LOB 데이터는 클라이언트에 임시로 저장된다. 0으로 설정하면 클라이언트에 LOB 데이터가 임시 저장되지 않는다.

이 프로퍼티를 이용해서 임계치를 적절히 조절하면, LOB 데이터가 클라이언트 LOB 캐시에 저장되어 Bulk-select 속도가 향상된다.

Altibase 운영 중 ALTER SYSTEM 또는 ALTER SESSION 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

LOCK_ESCALATION_MEMORY_SIZE(단위: 바이트)#

데이터 타입#

Unsigned Integer

기본값#

100MB

속성#

변경 가능, 단일 값

값의 범위#

[0, 1000MB]

설명#

메모리 테이블에 대해 다량의 변경(UPDATE) 배치 작업을 할 때, 버전(versioning)으로 인해 메모리 사용량이 크게 증가하는 것을 방지하기 위한 프로퍼티이다. 어떤 DML에 의해 생성되는 로그의 크기가 이 프로퍼티에 설정된 값보다 커지면 버전을 만들지 않고 "In-place update1"를 하여 메모리 사용량이 증가하는 것을 막는다.

변경시 버전 기법을 사용하면, 레코드 레벨의 X 잠금(lock)을 획득하고 테이블 레벨의 IX 잠금을 획득한다. 그러나 inplace update시에는 테이블 레벨에도 X 잠금 즉, 배타적 잠금을 획득한다. 따라서, 이 값을 너무 작게 설정하면 해당 테이블에 대한 확장성(scalability)이 떨어질 수 있으므로 유의해야 한다.

Altibase 운영 중 ALTER SYSTEM 문으로 이 프로퍼티의 값을 변경할 수 있다.

LOG_IO_TYPE#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

로그를 기록할 때의 I/O 모드를 나타낸다.

0: buffered I/O

1: direct I/O

LOG_CREATE_METHOD#

데이터 타입#

Unsigned Integer

기본값#

  • 0 (OS가 HP-UX, AIX 인 경우)
  • 1 (OS가 Linux인 경우)

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

로그 파일을 생성할 때 사용되는 시스템 콜을 선택하는 프로퍼티이다.

  • 0 : write() 시스템 콜

  • 1: fallocate() 시스템 콜(Linux에서만 사용 가능함)

LOW_FLUSH_PCT(단위: 백분율)#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

변경 가능, 단일 값

값의 범위#

[0, 100]

설명#

플러시 리스트의 길이가 전체 버퍼 크기에서 명시된 값 이상이 되면 교체 플러시를 수행한다. 이 때 해당 플러시 리스트의 모든 갱신 버퍼들은 플러시한다.

LOW_PREPARE_PCT (단위: 백분율)#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

변경 가능, 단일 값

값의 범위#

[0, 100]

설명#

플러셔가 대기에서 깨어났을 때 Prepare 리스트의 길이가 전체 버퍼에서 명시한 값 이하가 되면 교체 플러시를 수행한다. 이 때 해당 플러시 리스트의 모든 갱신 버퍼들은 플러시한다.

MATHEMATICS_TEMP_MEMORY_MAXIMUM (단위: 바이트)#

데이터 타입#

Unsigned Long

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 264-1]

설명#

시스템 전체에서 분석 함수가 사용하는 MATHEMATICS TEMP의 메모리 양을 제한한다. ( 분석 함수 : listagg, percentile_cont, percentile_disc, ... ) 사용한 메모리 양이 MATHEMATICS_TEMP_MEMORY_MAXIMUM과 같거나 크다면 에러가 발생한다. 속성 값이 0 인 경우에 메모리 사용량을 검사하지 않는다.

MAX_FLUSHER_WAIT_SEC (단위: 초)#

데이터 타입#

Unsigned Integer

기본값#

10

속성#

변경 가능, 단일 값

값의 범위#

[1, 232-1]

설명#

플러셔의 최대 대기 시간을 명시한다. 플러셔의 대기 시간은 작업 빈도에 따라 계속 늘어날 수 있지만, 이 값을 넘어가지는 못한다.

MEM_INDEX_KEY_REDISTRIBUTION#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

메모리 인덱스의 키를 재분배하는 프로퍼티이다.

이 프로퍼티는 역순의 인덱스 키가 다수 삽입될 때, 리프 노드의 분열이 많이 발생할 때, 데이터에 비해 인덱스 범위가 클 때 사용하면 효과적이다.

0: 메모리 인덱스의 키를 재분배하지 않는다.

1: 메모리 인덱스의 키를 재분배한다. (기본값)

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

MEM_INDEX_KEY_REDISTRIBUTION_STANDARD_RATE#

데이터 타입#

Unsigned Integer

기본값#

50

속성#

읽기 전용, 단일 값

값의 범위#

[10, 90]

설명#

메모리 인덱스의 키를 재분배하기 위해 이웃 노드의 미사용 공간 비율의 최솟값을 설정한다. 예를 들어 이 프로퍼티 값이 30이면 리프 노드의 빈 공간이 최소 30%이상이 있을 때 메모리 인덱스의 키를 재분배한다.

MEM_INDEX_KEY_REDISTRIBUTION프로퍼티가 0이면 이 프로퍼티는 동작하지 않는다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

MULTIPLEXING_CHECK_INTERVAL(단위: 마이크로초)#

데이터 타입#

Unsigned Integer

기본값#

200000

속성#

변경 가능, 단일 값

값의 범위#

[100000, 10000000]

설명#

쓰레드 매니저가 서비스 쓰레드 분산을 위해 세션을 확인하는 주기를 나타낸다. 시간 단위는 마이크로초이다.

쓰레드 매니저는 주기적으로 세션의 상태를 확인하여 세션의 통계 정보를 갱신하며, 서비스 쓰레드를 추가 또는 삭제한다.

MULTIPLEXING_MAX_THREAD_COUNT#

데이터 타입#

Unsigned Integer

기본값#

1024

속성#

변경 가능, 단일 값

값의 범위#

[1, 1024]

설명#

멀티플렉싱을 하는 쓰레드의 최대 개수다.

기존에 존재하는 쓰레드들의 부하가 증가하면 쓰레드가 자동으로 증가한다. 그러나 쓰레드들이 계속 증가하게 되면 오히려 성능이 저하될수 있으므로 적절한 값을 설정해야 한다.

단 큐(QUEUE)를 사용하는 경우에는 이 프로퍼티에서 설정한 값보다 더 많은 쓰레드가 생성될수 있다.

MULTIPLEXING_THREAD_COUNT#

데이터 타입#

Unsigned Integer

기본값#

호스트 장비의 논리 코어 수

속성#

읽기 전용, 단일 값

값의 범위#

[1, 1024]

설명#

Altibase가 유지하는 서비스 쓰레드의 최소 개수이다. 기본값은 장비의 논리 코어 수이다.

이 값은 서버가 구동된 후에는 변경할 수 없다.

NORMALFORM_MAXIMUM#

데이터 타입#

Unsigned Integer

기본값#

2048

속성#

변경 가능, 단일 값

값의 범위#

[1, 232-1]

설명#

조건절을 정규화할 때 정규화 형(Normal Form) 노드의 최대 개수를 지정할 수 있는 프로퍼티이다.

SELECT 질의문의 WHERE절에 존재하는 predicate들이 논리 연산자(AND, OR)로 복잡하게 연결되어 있을 때, Altibase는 테이블을 더 빠르게 탐색하기 위하여 predicate을 정규화시킨다.

정규화 방법으로 CNF(Conjunctive Normal Form)와 DNF(Disjunctive Normal Form)가 있으며, 이 프로퍼티에 명시한 노드 개수를 초과하면 해당 정규화 형으로 더 이상 정규화를 시도하지 않는다.

만약 두 가지 정규화 형이 명시한 노드 개수를 초과하면, 조건절을 정규화하지 않고 NNF(Not Normal Form)를 수행한다. NNF를 사용하면 조건절이 정규화되지 않아서 인덱스를 사용할 수 없다.

그러나 조건절을 지나치게 복잡하게 작성한 경우 NNF를 피하고자 이 프로퍼티의 값을 지나치게 크게 설정하면, 복잡한 조건절 처리를 위해 정규화 비용과 메모리 사용량이 증가한다.

따라서 조건절 작성시에 논리연산자를 지나친 사용을 자제하고 정규화 형태로 조건절을 작성하는 것이 중요하다.

이 규칙은 ON 조건 조인의 ON predicate에도 동일하게 적용된다.

OPTIMIZER_AUTO_STATS#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 10]

설명#

옵티마이저가 사용할 수 있는 통계 정보가 없을 때 자동으로 통계 정보를 수집하는 프로퍼티이다. 수집할 수 있는 Page개수는 1~10까지의 값에 따라 아래의 표와 같다. 0으로 설정하면 통계 정보를 자동으로 수집할 수 없다.

Altibase 운영 중 ALTER SESSION, SYSTEM 문을 이용하여 변경할 수 있다.

PAGE 개수 통계 정보 수집 여부
0(기본값) 0 OFF
1 32 ON
2 64 ON
3 128 ON
4 256 ON
5 512 ON
6 1024 ON
7 4096 (32MB) ON
8 16384 (128MB) ON
9 65536 (512MB) ON
10 ALL ON

OPTIMIZER_DELAYED_EXECUTION#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

실행 계획의 그래프를 기준으로 hierarchy, sorting, windowing, grouping, set, distinction의 실행(execute)을 패치(fetch)에서 수행시킨다. 사용자는 실행 계획에서 상위 PROJECTION 아래에 DELAY 플랜이 추가된 것을 확인할 수 있다.

이 프로퍼티는 쿼리 수행 시 실행(execute)을 지연시켜 첫 번째 패치(fetch)에서 수행하도록 하여, 실행 시간을 줄이고 첫 번째 패치 시간을 늘린다. 첫 번째 패치 이 후의 수행 시간은 동일하다. 관련된 수행 시간은 v$statement 성능 뷰로 확인 가능하다.

0 : disable (비활성화, 기본값)

1 : enable (활성화)

Altibase 운영 중 ALTER SESSION문을 이용하여 변경할 수 있다.

OPTIMIZER_FEATURE_ENABLE#

데이터 타입#

String

기본값#

Altibase 서버 버전

속성#

변경 가능, 단일 값

값의 범위#

[6.1.1.0.6 | 6.1.1.0.7 | 6.3.1.0.1 | 6.5.1.0.0| 7.1.0.0.0]

설명#

쿼리 옵티마이저와 관련된 프로퍼티들을 일괄적으로 제어하는 프로퍼티이다.

이 프로퍼티는 값의 범위에 속하는 버전에 한해 ALTER SYSTEM문으로 변경할 수 있다.

예:

ALTER SYSTEM SET OPTIMIZER_FEATURE_ENABLE = '6.1.1.0.6';

아래는 이 프로퍼티의 설정에 따라 쿼리 옵티마이저와 관련된 프로퍼티들이 어떤 값으로 설정되는지를 나타낸 표이다.

OPTIMIZER_FEATURE_ENABLE 6.1.1.0.6 6.1.1.0.7 6.3.1.0.1 6.5.1.0.0 7.1.0.0.0
QUERY_REWRITE_ENABLE 0 (off) 0 (off) 0 (off) 0 (off) 0 (off)
OPTIMIZER_UNNEST_SUBQUERY 0 (off) 0 (off) 1 (on) 1 (on) 1 (on)
OPTIMIZER_UNNEST_COMPLEX_SUBQUERY 0 (off) 0 (off) 1 (on) 1 (on) 1 (on)
OPTIMIZER_UNNEST_AGGREGATION_SUBQUERY 0 (off) 0 (off) 0 (off) 1 (on) 1 (on)
RESULT_CACHE_ENABLE 0 (off) 0 (off) 0 (off) 0 (off) 0 (off)
TOP_RESULT_CACHE_MODE 0 (off) 0 (off) 0 (off) 0 (off) 0 (off)
OPTIMIZER_AUTO_STATS 0 (off) 0 (off) 0 (off) 0 (off) 0 (off)
OPTIMIZER_PERFORMANCE_VIEW 0 (off) 0 (off) 0 (off) 0 (off) 1 (on)

OPTIMIZER_MODE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

이 프로퍼티 값이 0으로 설정되면 질의문을 최적화하기 위하여 비용 기반 최적화(cost-based optimization)가 사용되고, 1이면 규칙 기반 최적화(rule-based optimization)가 사용된다.

Altibase 운영 중 ALTER SYSTEM 문 또는 ALTER SESSION 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

OPTIMIZER_PERFORMANCE_VIEW#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

성능 뷰를 최적화하기 위하여 메모리 제약 여부를 설정하는 프로퍼티이다. Altibase 시스템 정보를 모니터링 할 때 내부적인 효율성 향상을 기대할 수 있다.

0: 적용 안함 - 메모리 제약이 없다.

1: 적용(기본값) - 메모리 제약이 있다. EXECUTE_STMT_MEMORY_MAXIMUM 프로퍼티의 값을 초과하면 쿼리 실행이 실패한다.

OPTIMIZER_UNNEST_AGGREGATION_SUBQUERY#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

SELECT 구문에 "GROUP BY절 없이 집계 함수만 사용한 중첩된 부질의(Nested Subquery)2"가 포함되어 있을 때, 쿼리 옵티마이저가 중첩 풀기(unnesting)를 할 것인지 여부를 지시하는 프로퍼티이다.

Altibase 운영 중 ALTER SYSTEM문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

0: unnesting을 시도하지 않는다.

1: unnesting을 시도한다.

OPTIMIZER_UNNEST_COMPLEX_SUBQUERY#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

SELECT 구문에 복잡한 형태의 중첩된 부질의(Nested Subquery)가 포함되어 있을 때, 쿼리 옵티마이저가 중첩 풀기(unnesting)를 할 것인지 여부를 지시하는 프로퍼티이다. 복잡한 형태란 FROM절에 뷰 또는 두 개 이상의 테이블이 있거나, 또는 SELECT, FROM, WHERE절 이외의 다른 절이 포함된 것을 말한다.

Altibase 운영 중 ALTER SYSTEM문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

0: unnesting을 시도하지 않는다.

1: unnesting을 시도한다.

OPTIMIZER_UNNEST_SUBQUERY#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

SELECT 구문에 "중첩된 부질의(Nested Subquery)"가 포함되어 있을 때, 쿼리 옵티마이저가 중첩 풀기(unnesting)를 할 것인지 여부를 지시하는 프로퍼티이다.

Altibase 운영 중 ALTER SYSTEM문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

0: unnesting을 시도하지 않는다.

1: unnesting을 시도한다.

OUTER_JOIN_OPERATOR_TRANSFORM_ENABLE#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

최적화된 쿼리의 실행 계획이 수행되도록, 사용자가 직접 ANSI/ISO SQL 표준 기법으로 Outer Join 연산을 수행하도록 설정할 수 있다.

이 값을 0으로 설정하면, ANSI/ISO SQL 표준 기법의 Outer Join 연산을 수행하며, 쿼리문에 Oracle Outer Join Operator (+)이 사용되었다면 에러가 발생한다. 기본값은 1이며, Oracle Outer Join Operator(+)를 사용한다.

0 : Disable

1 : Enable (기본값, Oracle Outer Join Operator 사용)

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

PARALLEL_LOAD_FACTOR#

데이터 타입#

Unsigned Integer

기본값#

2N (N:논리 코어 수)

속성#

읽기 전용, 단일 값

값의 범위#

[1, 512]

설명#

Altibase 서버 재가동 시 데이터베이스 정제 과정(database refining) 또는 인덱스 재구축(index rebuilding) 과정에서 생성되는 데이터베이스 정제 쓰레드/인덱스 구축 쓰레드 개수를 조절하는 프로퍼티이다.

주석으로 처리할 경우 기본값으로 시스템의 논리 코어 수(N)의 두 배(2N)만큼 병렬 작업 쓰레드가 생성된다.

PARALLEL_QUERY_THREAD_MAX#

데이터 타입#

Unsigned Integer

기본값#

논리 코어 수

속성#

변경 가능, 단일 값

값의 범위#

[1, 1024]

설명#

Altibase 서버가 병렬 질의를 처리하기 위해 생성할 수 있는 최대한의 작업 쓰레드 개수를 명시한다. 이 프로퍼티를 명시하지 않을 경우 기본값은 시스템의 논리 코어 수(N)로 설정된다.

Altibase 운영 중 ALTER SYSTEM문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

PARALLEL_QUERY_QUEUE_SIZE#

데이터 타입#

Unsigned Integer

기본값#

1024

속성#

변경 가능 전용, 단일 값

값의 범위#

[4, 1048576]

설명#

Altibase 서버가 병렬 질의를 처리할 때, PARALLEL-QUEUE(PRLQ) 노드에서 데이터를 임시로 저장할 큐의 크기를 지정하는 프로퍼티이다.

Altibase 운영 중 ALTER SYSTEM문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

PREPARE_STMT_MEMORY_MAXIMUM(단위: 바이트)#

데이터 타입#

Unsigned Long

기본값#

200M

속성#

변경 가능, 단일 값

값의 범위#

[1024*1024, 264-1]

설명#

하나의 질의문(statement)이 사용할 수 있는 prepare 메모리의 양을 제한한다.

Altibase 운영 중 ALTER SYSTEM문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

QUERY_REWRITE_ENABLE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

Altibase 서버에서 쿼리 변환 시에 함수 기반 인덱스를 적용할지 여부를 지정하는 프로퍼티이다.

0: disable (미적용)

1: enable (적용)

REFINE_PAGE_COUNT#

데이터 타입#

Unsigned Integer

기본값#

50

속성#

읽기 전용, 단일 값

값의 범위#

[0, 232-1]

설명#

Altibase 서버 가동 시 수행하는 단계 중 데이터베이스 정제(database refining) 단계가 있다. Altibase 서버가 이전 종료할 당시, 트랜잭션들이 생성한 버전 레코드(versioning record)들이 가비지 콜렉터에 의해 처리되지 못해서 불필요한 레코드들이 데이터베이스에 존재하고 있을 수 있으며 또한 서버 가동시의 회복 과정에서 생성된 버전 레코드들이 존재할 수 있다. 이들 레코드들을 재사용 가능하도록 처리하는 것이 데이터베이스 정제 단계이다.

데이터베이스 정제 대상이 되는 레코드들이 많을 경우 시간을 많이 소모할 수 있기 때문에 이 작업을 여러 쓰레드에 의해 병렬로 수행할 수 있다. 이 때 각 쓰레드가 처리하는 페이지 양을 지정한다.

RESULT_CACHE_ENABLE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

Result Cache를 사용하여 중간 결과의 실행계획을 저장할 지 여부를 설정한다.

0: Disabled (기본값) – 캐시기능을 사용하지 않는다.

1: Enabled – 캐시기능을 사용한다.

Altibase 운영 중 ALTER SYSTEM 또는 ALTER SESSION 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

RESULT_CACHE_MEMORY_MAXIMUM (단위:바이트)#

데이터 타입#

Unsigned Long

기본값#

10M

속성#

변경 가능, 단일 값

값의 범위#

[4096, ULONG MAX]

설명#

Result Cache및 Top Result Cache를 사용할 때, 저장하는 메모리 크기를 제한한다. 만약 이 크기를 넘으면 메모리에 저장되지 않고 해제된다. 이 프로퍼티는 쿼리 1개에 대한 제약이며 시스템 전체에 대한 제약은 제공하지 않는다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

SECONDARY_BUFFER_ENABLE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

보조 버퍼(Secondary Buffer) 기능을 사용하려면, 이 프로퍼티의 값을 설정한 후 반드시 SECONDARY_BUFFER_FILE_DIRECTORY, SECONDARY_BUFFER_SIZE를 설정해야 서버가 구동된다.

보조 버퍼 기능을 사용하면 메모리 버퍼의 데이터 페이지를 디스크에 바로 플러시하지 않고 SSD(Solid-state Drive)의 보조 버퍼에 먼저 플러시한다. 그리고 Altibase 서버 내의 별도의 쓰레드가 보조 버퍼의 데이터 페이지를 디스크로 플러시한다.

0: 보조 버퍼 기능 비활성화

1: 보조 버퍼 기능 활성화

SECONDARY_BUFFER_FILE_DIRECTORY#

데이터 타입#

String

기본값#

""

속성#

읽기 전용, 단일 값

값의 범위#

없음

설명#

보조 버퍼 파일이 존재할 디렉토리의 경로를 지정한다. 파일 이름은 sbuffer.sbf로 고정되며, 변경할 수 없다. 이 프로퍼티를 설정하지 않으면 SECONDARY_BUFFER_ENABLE 프로퍼티가 1이더라도 보조 버퍼 기능이 비활성화된다.

보조 버퍼 기능에 대한 설명은 SECONDARY_BUFFER_ENABLE 프로퍼티의 설명을 참고하도록 한다.

SECONDARY_BUFFER_FLUSHER_CNT#

데이터 타입#

Unsigned Integer

기본값#

2

속성#

읽기 전용, 단일 값

값의 범위#

[1, 16]

설명#

보조 버퍼의 데이터 페이지를 하드 디스크로 플러시하는 쓰레드(flusher)의 개수를 지정한다.

보조 버퍼 기능에 대한 설명은 SECONDARY_BUFFER_ENABLE 프로퍼티의 설명을 참고하도록 한다.

SECONDARY_BUFFER_SIZE (단위: 바이트)#

데이터 타입#

Unsigned Long

기본값#

0

속성#

읽기 전용, 단일 값

값의 범위#

[0, 32GB]

설명#

보조 버퍼 파일의 크기를 명시한다. 이 값이 0이면 SECONDARY_BUFFER_ENABLE 프로퍼티가 1이더라도 보조 버퍼 기능이 비활성화된다.

보조 버퍼 기능에 대한 설명은 SECONDARY_BUFFER_ENABLE 프로퍼티의 설명을 참고하도록 한다.

SECONDARY_BUFFER_TYPE#

데이터 타입#

Unsigned Integer

기본값#

2

속성#

읽기 전용, 단일 값

값의 범위#

[0, 2]

설명#

보조 버퍼에 저장할 데이터 페이지의 타입을 지정한다. 아래의 값 중 하나를 지정할 수 있다.

0: 모든 타입의 페이지

1: Dirty 페이지

2: Clean 페이지

보조 버퍼 기능에 대한 설명은 SECONDARY_BUFFER_ENABLE 프로퍼티의 설명을 참고하도록 한다.

SORT_AREA_SIZE(단위: 바이트)#

데이터 타입#

Unsigned long

기본값#

1048576

속성#

변경 가능, 단일 값

값의 범위#

[512, 264-1]

설명#

서버가 정렬 작업을 위해 사용하는 임시 테이블 하나의 메모리 크기를 지정한다.

시스템 운영 중에는 ALTER SYSTEM 문을 이용해 프로퍼티의 값을 변경할 수 있다.

SQL_PLAN_CACHE_BUCKET_CNT#

데이터 타입#

Unsigned Integer

기본값#

127

속성#

읽기 전용, 단일 값

값의 범위#

[5, 4096]

설명#

SQL 플랜 캐시에서 해쉬 테이블의 버킷 개수를 나타낸다.

SQL_PLAN_CACHE_HOT_REGION_LRU_RATIO(단위: 백분율)#

데이터 타입#

Unsigned Integer

기본값#

50

속성#

변경 가능, 단일 값

값의 범위#

[10, 100]

설명#

SQL 플랜 캐시에 있는 LRU 리스트의 HOT 영역 비율을 나타낸다. HOT 영역 LRU 리스트는 SQL 플랜 캐시에 있는 LRU 리스트에서 빈번하게 참조되는 플랜들을 별도의 HOT 영역으로 저장한 것이다.

시스템 운영 중 ALTER SYSTEM 문을 이용해 프로퍼티의 값을 변경할 수 있다.

SQL_PLAN_CACHE_PREPARED_EXECUTION_CONTEXT_CNT#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

변경 가능, 단일 값

값의 범위#

[0, 1024]

설명#

플랜을 생성할 때 초기에 생성하는 execution context의 개수를 나타낸다.

플랜을 생성하기 전에 execution context의 개수를 지정하지만, 이는 초기에 생성하는 개수만을 결정할 뿐이다. 그리고 execution context는 실행 시간에 필요한 만큼 자동으로 증가되거나 감소된다.

그러나 하나의 플랜을 동시에 execute하는 경우 이 값을 증가시키는 것은 성능에 도움이 되지만, 그렇지 않은 경우에는 플랜의 크기만 증가시킬 뿐 성능 향상에 도움이 되지 않는다.

SQL_PLAN_CACHE_SIZE (단위: 바이트)#

데이터 타입#

Unsigned long

기본값#

64 M

속성#

변경 가능, 단일 값

값의 범위#

[0, 264-1]

설명#

SQL 플랜 캐시의 최대 크기를 나타낸다. 그러나 0으로 설정되면 캐시를 사용할 수 없게 된다. V$SQL_PLAN_CACHE의 MAX_CACHE_SIZE로 확인할 수 있다.

시스템 운영 중에는 ALTER SYSTEM 문을 이용해 프로퍼티의 값을 변경할 수 있다.

STATEMENT_LIST_PARTIAL_SCAN_COUNT#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 232-1]

설명#

V$STATEMENT, V$SQLTEXT, 또는 V$PLANTEXT 성능 뷰에 대한 SELECT 쿼리 결과로서 클라이언트에 반환할 statement의 최대 개수를 지정한다. 이 값이 0이면, 모든 statement에 대한 모든 레코드를 반환한다.

시스템 운영 중에는 ALTER SYSTEM 문을 이용해 프로퍼티의 값을 변경할 수 있다.

TABLE_INITRANS#

데이터 타입#

Unsigned Integer

기본값#

2

속성#

읽기 전용, 단일 값

값의 범위#

[0, 120]

설명#

테이블 페이지에 유지될 TTS(Touched Transaction Slots)의 초기 개수를 나타낸다.

TABLE_LOCK_ENABLE#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

잠금(Lock) 수준을 제어하는 프로퍼티이다.

0: 테이블 잠금을 지원하지 않으며 레코드 잠금을 지원한다. 단순 DML 사용시에 성능이 향상된다.

1: 테이블 잠금과 레코드 잠금을 지원한다.

이 프로퍼티 값을 0으로 설정하면 다음과 같은 제약이 따른다.

  • DDL문을 수행할 수 없다.
  • CREATE DATABASE질의문을 수행할 수 없다.
  • 이중화로 사용할 시에병렬 동기화 (parallel SYNC)를 사용할 수 없다.

이 프로퍼티는 ALTER SYSTEM 문으로 변경이 가능하다.

TABLE_LOCK_MODE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

테이블 파티션의 잠금(Lock) 수준을 설정하는 프로퍼티이다. TABLE_LOCK_ENABLE프로퍼티가 1인 경우에만 이 프로퍼티를 사용할 수 있다.

0: 테이블 파티션 단위의 잠금을 지원한다. 파티션 단위의 잠금을 사용하므로 ALTER TABLE…TRUNCATE PARTITION와 같이 파티션 단위로 수행되는 질의문 사용 시에 동시성이 향상된다.

1: 테이블 파티션의 잠금을 지원하지 않으며 파티션드 테이블의 논 파티션드 테이블 잠금과 동일하다. 잠금 횟수가 줄어들어 DML 성능이 향상된다.

TABLE_MAXTRANS#

데이터 타입#

Unsigned Integer

기본값#

120

속성#

읽기 전용, 단일 값

값의 범위#

[0, 120]

설명#

테이블 페이지에 유지될 수 있는 TTS(Touched Transaction Slots)의 최대 개수를 나타낸다.

TABLESPACE_LOCK_ENABLE#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

테이블스페이스 잠금(lock) 레벨을 지정하는 프로퍼티이다.

1: 테이블스페이스 잠금을 지원한다.

0: 테이블스페이스 잠금을 지원하지 않는다. 이 경우 단순 DML 수행 시 처리 속도 향상의 이점이 있지만, 다음과 같은 제약이 있다.

  • DDL문을 수행할 수 없다.
  • CREATE DATABASE 구문을 수행할 수 없다.
  • 이중화 시 병렬 동기화(Parallel Synchronization)를 허용하지 않는다.

Altibase 운영 중 ALTER SYSTEM 또는 ALTER SESSION문을 이용하여 이 프로퍼티의 값을 변경할 수 있다. 단, 활성화된 트랜잭션이 없을 경우에만 변경할 수 있다.

TEMP_STATS_WATCH_TIME#

데이터 타입#

Unsigned Int

기본값#

10

속성#

변경 가능, 단일 값

값의 범위#

[0, 232-1]

설명#

통계 정보에 등록되는 기준 시간을 지정한다. 임시 테이블을 사용하는 연산 중 이 프로퍼티의 설정된 시간보다 오래 걸리는 연산은 통계정보로 등록된다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

THREAD_CPU_AFFINITY#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

서비스 쓰레드를 CPU와 연계할지 여부를 설정하는 프로퍼티이다. CPU 연계 기능을 활성화하면 하나의 서비스 쓰레드는 동일한 CPU 코어에만 할당될 것이다. 또한, 한 CPU 코어에서 다른 CPU 코어로 쓰레드 정보를 이동하는 비용이 줄어들 것이다.

  • 0: CPU 연계 기능을 사용하지 않는다.
  • 1: CPU 연계 기능을 사용한다.

하지만 HP-UX IA64 플랫폼에서는 CPU 연계 기능을 사용하는 경우에 로깅 병목이 발생할 수 있다. 따라서 HP-UX IA64 플랫폼에서는 이 프로퍼티의 값을 1로 설정(altibase.properties 파일에서)하여도 Altibase 서버는 CPU 연계 기능을 활성화하지 않는다.

THREAD_REUSE_ENABLE#

데이터 타입#

Unsigned Integer

기본값#

1

속성#

읽기 전용, 단일 값

값의 범위#

[0, 1]

설명#

Altibase 내부에서 사용하는 쓰레드를 재사용할 것인지 여부를 설정한다.

0: 쓰레드 재사용 불가

1: 쓰레드 재사용 가능(기본값)

쓰레드를 재사용하면, 메모리에 대기중인 쓰레드를 사용할 수 있어 쓰레드를 생성하는 비용을 줄일 수 있다.

TIMED_STATISTICS#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

Wait 발생시 대기 시간과 SQL 연산의 소요 시간을 측정할 것인지 여부를 설정한다. 이 프로퍼티를 측정하는 것으로 설정할 경우 성능이 떨어질 수 있다.

0: 측정하지 않음

1: 측정함

TIMER_RUNNING_LEVEL#

데이터 타입#

Unsigned Integer

기본값#

플랫폼 별로 기본값이 아래와 같이 상이하다.

1 : 하위에 기술되지 않은 모든 플랫폼
2 : IBM-AIX
3 : x86-linux, Amd64-linux

속성#

읽기 전용, 단일 값

값의 범위#

[1, 3]

설명#

Wait event를 대기하는 시간과 SQL 연산에 소요되는 시간을 측정하는 방법을 설정한다.

1: 시간을 측정하는 쓰레드가 TIMER_THREAD_RESOLUTION에서 지정한 규칙적인 간격으로 시간을 측정한다.

2: 플랫폼 별로 지원하는 라이브러리 함수를 이용하여 측정한다.

3: 1번과 비슷하지만 시스템 시계(clock)를 이용하여 측정한다. 따라서 다른 방법에 비해 성능 저하가 낮다.

LINUX, PA-RISC-HP-64 이외의 장비에서 이 값을 3으로 설정할 경우, 시간을 제대로 측정하지 못하여 Altibase 서버가 기동이 안 될 수도 있다. 이 경우 Altibase는 altibase_boot.log에 경고 메시지를 남기고, 자동으로 이 프로퍼티의 값을 기본값으로 변경한 후 기동한다. 기본값이 1인 장비에서는 아래와 같은 메시지가 altibase_boot.log에 기록될 것이다.

[Warning] Because a TIMER_RUNNING_LEVEL of 3 is not supported on this platform, it has been set to the default(=1) for this platform.

TIMER_THREAD_RESOLUTION (단위: 마이크로초)#

데이터 타입#

Unsigned Integer

기본값#

1000

속성#

변경 가능, 단일 값

값의 범위#

[50, 10000000]

설명#

TIMER_RUNNING_LEVEL을 1로 설정한 경우 이 프로퍼티는 시간을 측정하는 주기를 의미한다.

TOP_RESULT_CACHE_MODE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 3]

설명#

Top Result Cache를 사용하여 최종 결과의 실행계획을 저장할 지 여부를 설정한다.

0: Disabled (기본값) – Top Result Cache기능을 사용하지 않는다.

1: MEMORY - 메모리 테이블만 사용한 쿼리의 최종결과를 캐시한다

2: DISK – 디스크 테이블만 사용한 쿼리의 최종결과를 캐시한다

3: ALL – 테이블 타입과 상관없이 최종 결과를 캐시한다.

Altibase 운영 중 ALTER SYSTEM 또는 ALTER SESSION 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

TOTAL_WA_SIZE (단위: 바이트)#

데이터 타입#

Unsigned Long

기본값#

128MB

속성#

변경 가능, 단일 값

값의 범위#

[0, 264-1]

설명#

정렬 또는 해싱 작업을 위해 할당할 수 있는 메모리의 최대 크기를 지정한다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

INIT_TOTAL_WA_SIZE (단위: 바이트)#

데이터 타입#

Unsigned Long

기본값#

264-1

속성#

변경 가능, 단일 값

값의 범위#

[0, 264-1]

설명#

정렬 또는 해싱 작업을 위해 미리 할당 할 메모리의 크기를 지정한다.

TOTAL_WA_SIZE 보다 더 클 경우 TOTAL_WA_SIZE 까지만 생성한다.

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

TOUCH_TIME_INTERVAL (단위: 초)#

데이터 타입#

Unsigned Integer

기본값#

3

속성#

변경 가능, 단일 값

값의 범위#

[0, 100]

설명#

버퍼의 접근 횟수를 증가시키기 위한 최소 시간 간격을 의미한다. 버퍼에 대해 마지막으로 접근한 이후 이 프로퍼티에서 명시한 시간이 지나면, 접근 횟수가 증가한다.

이 값이 기본값 3으로 명시되면, 특정 버퍼의 마지막 접근 이후 3초 이내의 접근에 대해서는 접근 횟수를 갱신하지 않는다.

TRANSACTION_SEGMENT_COUNT (단위: 개수)#

데이터 타입#

Unsigned Integer

기본값#

256

속성#

읽기 전용, 단일 값

값의 범위#

[1, 16384]

설명#

언두 테이블스페이스에서 관리하는 트랜잭션 세그먼트의 개수를 나타낸다. 트랜잭션 세그먼트에는 TSS 세그먼트와 언두 세그먼트가 있으며 기본값 256은 TSS 세그먼트 256개, 언두 세그먼트 256개를 의미한다. 트랜잭션 세그먼트는 Altibase 서버 구동 시 생성된다. 트랜잭션 수행 중 트랜잭션 세그먼트가 부족한 경우 altibase_boot.log 에 "TRANSACTION_SEGMENT_COUNT is full" 로그를 남기고 사용 가능한 트랜잭션 세그먼트를 할당받을 때까지 트랜잭션은 대기한다.

Altibase 분산 데이터베이스 시스템에서 이 프로퍼티 값을 이전 값보다 작게 설정하기를 원하면 분산 트랜잭션을 모두 종료한 후 Altibase 서버를 중지해야 한다. 정리되지 않은 분산 트랜잭션이 있을 때 현재 값보다 작게 설정하고 Altibase 서버를 재시작한 경우 기존 언두 테이블스페이스의 공간에 접근할 수 없어 Altibase 서버 구동이 실패한다.

TRX_UPDATE_MAX_LOGSIZE (단위: 바이트)#

데이터 타입#

Unsigned Integer

기본값#

10 MB

속성#

변경 가능, 단일 값

값의 범위#

[0, 264-1]

설명#

하나의 DML에 의해 생성되는 로그의 누적 크기가 이 프로퍼티에 설정된 값보다 커지면 해당 트랜잭션을 중단하고 오류를 반환한다.

사용자의 부주의로 대용량 배치 작업이 실행되어 시스템에 부하가 발생하는 것을 방지하기 위해 사용하는 프로퍼티이다.

해당 프로퍼티의 값을 0으로 설정하면 로그 크기에 대한 제한이 없어지기 때문에, 트랜잭션을 갱신할 때 발생하는 로그를 무한대로 사용할 수 있다.

Altibase 운영 중 ALTER SYSTEM 문 또는 ALTER SESSION 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.

SERIAL_EXECUTE_MODE#

데이터 타입#

Unsigned Integer

기본값#

0

속성#

변경 가능, 단일 값

값의 범위#

[0, 1]

설명#

이 프로퍼티는 SCAN PLAN내 FILTER를 최적하화여 FILTER 수행 성능을 향상시킨다. 이때 단순한 FILTER에 한하여 최적화하며, 최적화 여부는 PLAN TREE에서 확인할 수 있다.

0: 최적화지 않음

1: 최적화함


  1. In-place update란 변경 대상이 되는 원래 레코드에 대해 버전(version)을 만들지 않고 해당 칼럼의 값이 바로 수정되는 것을 의미한다. 

  2. 중첩된 부질의 (Nested Subquery): WHERE절에 포함된 부질의이다. 결과 집합을 한정하기 위해, 주로 메인 쿼리(Main Query, 외부 질의)에 있는 칼럼을 참조하는 형태를 가진다. 이렇게 중첩된 부질의가 포함된 쿼리를 중첩되지 않은 조인 형태의 쿼리로 변환하는 것을 "Subquery Unnesting"이라고 한다.