개요
TRANSACTION_TABLE_SIZE 는 알티베이스 서버 프로퍼티로, 데이터베이스 운용 중 동시에 수행할 수 있는 최대 트랜잭션 수를 의미합니다.
하나의 세션에서는 항상 한 개의 트랜잭션이 수행됩니다. 따라서 동시 접속 세션 수가 증가할 경우 동시에 수행되는 트랜잭션 수도 증가할 가능성이 있기 때문에 MAX_CLIENT 프로퍼티 값을 증가할 때 TRANSACTION_TABLE_SIZE 변경도 고려해야 합니다.
TRANSACTION_TABLE_SIZE 는 트랜잭션의 고유 번호(TID)를 의미하기도 합니다. 잘못된 변경으로 TID 가 꼬이게 되는 경우 서로 다른 트랜잭션이 하나의 트랜잭션으로 인식될 수 있어 변경 시 주의를 요하는 프로퍼티입니다.
또한 ALTIBASE HDB 버전에 따라 변경 방법에 차이가 있으니 관련 내용에 대해 정리합니다.
제약 사항
- ALTIBASE HDB 버전에 따라 TRANSACTION_TABLE_SIZE 를 변경하기 위해서 데이터 마이그레이션이 필요한 버전이 있습니다. 아래 '변경 방법' 참고하시기 바랍니다.
- 현재 값 보다 큰 2^n 값으로만 변경할 수 있습니다.
- 2^n 인 16 -> 32 -> 64 -> 128 -> 256 -> 512 -> 1024 -> 2048 -> 4096 -> 8192 -> 16384 순으로 변경할 수 있습니다.
- 큰 값에서 작은 값으로 변경할 수 없습니다.
- 동시 수행 트랜잭션 수는 사용자 트랜잭션, 이중화 트랜잭션, 내부 트랜잭션을 모두 포함하기 때문에 MAX_CLIENT 보다 크게 설정해야 합니다.
- 이중화 환경인 경우 이중화 트랜잭션까지 고려하여 MAX_CLIENT 의 두 배까지 설정해야 할 수 있습니다.
- 이중화 환경인 경우 이중화 대상 서버 간에 TRANSACTION_TABLE_SIZE 가 모두 동일해야 합니다. TRANSACTION_TABLE_SIZE 가 다르면 이중화 sender 쓰레드가 구동되지 않습니다.
- 수행 예
변경 방법
오프라인으로 변경
아래 명시된 버전부터는 오프라인으로 변경할 수 있습니다. (ALTIBASE HDB 4 버전은 제외)
ALTIBASE HDB 서버 버전 | 4.3.9 | 5.1.5.93 부터 | 5.3.3.48 부터 | 5.3.5.17 부터 | 5.5.1.1.0 부터 |
---|---|---|---|---|---|
오프라인으로 변경 | 변경 불가. | 변경 가능 | 변경 가능 | 변경 가능 | 변경 가능 |
ALTIBASE HDB 서버 버전 | 4.3.9 | 5.1.5.0 ~ 5.1.5.92 | 5.3.3.0 ~ 5.3.3.47 | 5.3.5.0 ~ 5.3.5.16 | 5.5.1.0.0 ~ 5.5.1.0.9 |
---|---|---|---|---|---|
오프라인으로 변경 | 변경 불가. | 변경 불가. | 변경 불가. | 변경 불가. | 변경 불가. |
1
24
ALTER SYSTEM 으로 변경
ALTER SYSTEM 으로 변경 시 Alter success. 가 떨어져서 변경 가능한 것처럼 보일 수 있지만 TRANSACTION_TABLE_SIZE 는 온라인 상태에서 변경할 수 없습니다.
ALTIBASE HDB 서버 버전 | 4.3.9 | 5.1.5 | 5.3.3.64 부터 | 5.3.5.26 부터 | 5.5.1.2.13 부터 |
---|---|---|---|---|---|
온라인으로 변경 | alter system 으로 수행가능한 것처럼 보이나 | alter system 으로 수행가능한 것처럼 보이나 | 변경 불가 | 변경 불가 | 변경 불가 |
ALTIBASE HDB 서버 버전 | 4.3.9 | 5.1.5 | 5.3.3.0 ~ 5.3.3.63 | 5.3.5.0 ~ 5.3.5.25 | 5.5.1.0.0 ~ 5.5.1.2.12 |
---|---|---|---|---|---|
온라인으로 변경 | alter system 으로 수행가능한 것처럼 보이나 | alter system 으로 수행가능한 것처럼 보이나 | alter system 으로 수행가능한 것처럼 보이나 | alter system 으로 수행가능한 것처럼 보이나 | alter system 으로 수행가능한 것처럼 보이나 |
BUG-33467 이 반영된 버전에서는 ALTER SYSTEM 으로 변경 시 [ERR-0104E : The property [TRANSACTION_TABLE_SIZE] is read-only.] 에러가 발생합니다.
1
2
관련 버그
BUG-33467 TRANSACTION_TABLE_SIZE 프로퍼티 속성을 readonly 로 변경합니다. ALTER SYSTEM 으로 변경할 수 없게 수정합니다.
BUG-31862 마이그레이션 없이 TRANSACTION_TABLE_SIZE 를 변경할 수 있게 개선합니다. 현재값 보다 큰 2^n 값으로만 변경 가능합니다.
변경 절차
데이터 마이그레이션이 필요한 경우
- 서비스 downtime 확보
- aexport, iloader 를 이용하여 데이터베이스 백업
- 알티베이스 서버 shutdown
- altibase.properties 에서 TRANSACTION_TABLE_SIZE 변경
- 데이터베이스 재생성
- 2.에서 백업한 백업본으로 데이터 업로드
- 알티베이스 서버 startup
오프라인으로 변경 가능한 경우
- 서비스 downtime 확보
- 알티베이스 서버 shutdown
- altibase.properties 에서 TRANSACTION_TABLE_SIZE 변경
- 알티베이스 서버 startup
최대값
ALTIBASE HDB 서버 버전에 따라 TRANSACTION_TABLE_SIZE 최대값이 다릅니다. 이전 버전에서는 최대값 설명에 오류가 있는 매뉴얼도 있으니 아래 표를 참고하시기 바랍니다.
ALTIBASE HDB 서버 버전 | 4.3.9.222 부터 | 5.1.5.112 부터 | 5.3.3.91 부터 | 5.3.5.35 부터 | 5.5.1.5.3 부터 |
---|---|---|---|---|---|
최대값 | 16384 | 16384 | 16384 | 16384 | 16384 |
ALTIBASE HDB 서버 버전 | 4.3.9.0 ~ 4.3.9.221 | 5.1.5.0 ~ 5.1.5.111 | 5.3.3.0 ~ 5.3.3.90 | 5.3.5.0 ~ 5.3.5.34 | 5.5.1.0.0 ~ 5.5.1.5.2 |
---|---|---|---|---|---|
최대값 | 8192 | 8192 | 8192 | 8192 | 8192 |
관련 버그
BUG-37851 TRANSACTION_TABLE_SIZE 값의 최대값을 수정해야 합니다.
TRANSACTION_TABLE_SIZE 와 메모리 사용
ALTIBASE HDB 서버 구동 시에 TRANSACTION_TABLE_SIZE 를 위한 메모리가 미리 할당됩니다. 그래서 TRANSACTION_TABLE_SIZE 설정값에 따라 메모리 사용이 다소 증가할 수 있습니다.
다음은 TRANSACTION_TABLE_SIZE 설정 값에 따른 메모리 사용을 비교한 예입니다.
메모리 사용량은 시스템 환경에 따라 다를 수 있습니다. TRANSACTION_TABLE_SIZE 설정 값에 따른 차이만 참고하기 바랍니다. 단위는 KB 입니다.
| 1024 | 2048 | 4096 | 8192 | 16384 |
---|---|---|---|---|---|
VSZ | 1,484,952 | 1,647,264 | 2,019,544 | 2,911,096 | 5,309,148 |
RSS | 660,900 | 825,956 | 1,164,640 | 2,093,068 | 4,465,108 |
테스트 서버 환경은 아래와 같습니다.
- Linux
- 환경 변수 MALLOC_ARENA_MAX=4
- ALTIBASE HDB 6.3.1.2.7
TRANSACTION_TABLE_SIZE 를 초과한 경우
동시 수행 트랜잭션 수가 TRANSACTION_TABLE_SIZE 를 초과한 경우 다음과 같은 현상으로 데이터베이스가 hang 상태로 보일 수 있으며,
- 신규 세션 접속 불가
- 접속되어 있는 세션에서 SQL 수행 시 응답 없음
altibase_boot.log 에 아래와 같은 메시지가 나타납니다.
성능 뷰
TRANSACTION_TABLE_SIZE 설정 값과 수행 중인 트랜잭션의 수는 V$TRANSACTION_MGR 에서 확인할 수 있습니다.
에러 메시지
ERR-10166(errno=2) TRANSACTION_TABLE_SIZE ['4094'] is not a power of two.
TRANSACTION_TABLE_SIZE 프로퍼티의 값이 2^n 이 아닌 경우 발생하는 에러 메시지입니다.
2^n 값은 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 입니다.
ERR-10018(errno=0) The version of data file for backup is not compatible with the version of storage manager. Backup DB => [ Version ID = 4.11.1, Bit = 64, Endian = BIG LogSize = 10485760 Transaction Table Size = 1024 ] Server=>[ Version ID = 4.11.1, Bit = 64, Endian = BIG LogSize = 10485760 Transaction Table Size = 2048 ]
데이터베이스 생성 시 설정한 TRANSACTION_TABLE_SIZE 를 변경할 수 없는 버전에서 발생하는 에러 메시지입니다.
큰 값에서 작은 값으로 변경할 때로 발생할 수 있습니다.