Skip to end of metadata
Go to start of metadata

개요


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 으로 수행가능한 것처럼 보이나
실제로는 변경 불가 함.

alter system 으로 수행가능한 것처럼 보이나
실제로는 변경 불가 함.

변경 불가
alter system 으로 수행가능한 것처럼 보이나

변경 불가
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 으로 수행가능한 것처럼 보이나
실제로는 변경 불가 함.

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 값으로만 변경 가능합니다.

 

 

변경 절차


데이터 마이그레이션이 필요한 경우

  1. 서비스 downtime 확보
  2. aexport, iloader 를 이용하여 데이터베이스 백업
  3. 알티베이스 서버 shutdown
  4. altibase.properties 에서 TRANSACTION_TABLE_SIZE 변경
  5. 데이터베이스 재생성
  6. 2.에서 백업한 백업본으로 데이터 업로드
  7. 알티베이스 서버 startup

오프라인으로 변경 가능한 경우

  1. 서비스 downtime 확보
  2. 알티베이스 서버 shutdown
  3. altibase.properties 에서 TRANSACTION_TABLE_SIZE 변경
  4. 알티베이스 서버 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 를 변경할 수 없는 버전에서 발생하는 에러 메시지입니다.

큰 값에서 작은 값으로 변경할 때로 발생할 수 있습니다.

  • No labels