Appendix E. Undo 테이블 스페이스 크기 산정
Tibero 설치 또는 운용 시, 필요한 Undo 테이블 스페이스 용량을 계산하고 조정하는 방법에 대해 설명합니다.
개요
데이터 갱신이 많은 시스템인 경우, Undo 테이블 스페이스에 대해 I/O가 많이 발생하므로 Undo 테이블 스페이스를 여러 개의 데이터 파일로 구성하여 I/O를 분산시킬 수 있습니다.
Undo 자동 관리는 다음의 장점을 가진다.
설계 및 관리 용이(rollback segment)
Undo Data의 overwrite 방지
영역확장 용이
플래시백 쿼리 이용가능
참고
Tibero는 수동 관리는 지원하지 않습니다.
고려사항
다음은 Undo 테이블 스페이스 크기를 산정할 때 고려할 사항입니다.
데이터 파일 용량, UNDO_RETENTION, Undo Segment 개수
각 Undo Segment 공간은 자동 관리되므로 사용자는 전체 Undo Segment의 최소/최대 개수와 데이터 파일 용량만 고려합니다.
– 최소 Undo Segment 개수(USGMT_ONLINE_MIN)의 기본값은 11입니다. 단, Undo Segment 개수 보다 동시 수행 트랜잭션 개수가 많아 부하가 발생하는 경우, 추가 Undo Segment를 생성하는 오버헤드가 생긴다. 이와 같은 경우, 예상되는 동시 수행 트랜잭션 개수 만큼 USGMT_ONLINE_MIN 를 설정하 여, 미리 Undo Segment를 생성해놓으면 오버헤드를 줄일 수 있습니다.
다음은 인스턴스 별 Undo Segment 개수를 확인하는 방법 입니다.
USGMT_ONLINE_MIN 가 이미 생성된 Undo Segment 개수 보다 크게 설정됐다면, (USGMT_ON LINE_MIN - 이미 생성된 Undo Segment 개수) 만큼 부팅 과정에서 추가 생성합니다. TAC의 경우, 해당 파라미터를 각 인스턴스 별로 적용할 수 있으며, 적용 후 부팅 시 각 인스턴스 별 Undo Segment 개수 가 다른 것을 확인할 수 있습니다.
– 최대 Undo Segment 개수(USGMT_ONLINE_MAX)는 각 인스턴스 별로 생성할 수 있는 Undo Segment
의 상한을 의미합니다.
Tibero는 하나의 Undo Segment를 여러 트랜잭션이 공유하여 사용하지 않도록, 동시 수행 트랜잭션 개수가 많을 때, 가능한 추가 Undo Segment를 생성합니다.
USGMT_ONLINE_MIN, USGMT_ONLINE_MAX 파라미터는 각 인스턴스 별로 따로 적용되기 때문 에 적합한 값을 설정하는 것을 권장합니다.
용량 계산 방법
아래 기준에 해당하는 Undo 테이블 스페이스 크기를 계산할 수 있습니다.
Undo 테이블 스페이스를 생성하는데 필요한 최소 크기
예상 동시 수행 트랜잭션수를 기준으로 한 예상 크기
TPR 정보를 이용한 실제 사용 크기
최초로 DB를 설치하는 경우 최소 크기 및 예상 크기 중 큰 값을 기준으로 Undo 테이블 스페이스 크기를 산정합니다.
이후 TPR에서 트랜잭션 최대 부하가 발생했을 때, '초당 Undo block 소모량'을 기준으로 예상 크기와 실 제 사용 크기가 맞는지 검증 할 수 있습니다.
[그림 .1] Tibero TPR Report

다음은 계산 공식에서 사용되는 항목과 설명입니다.
USGMT_ONLINE_MIN
인스턴스 당 Undo Segment 최소 개수
USGMT_ONLINE_MAX
인스턴스 당 Undo Segment 최대 개수(상한)
MAX_SESSION_COUNT
최대 트랜잭션 개수
USGMT_UNIFORM_EXTSIZE *2
Undo Segment 1개 생성 시 필요한 용량
각 Undo Segment는 최 소 2개의 Undo extent가 필요
초당 Undo block 소모량
DB 운영 중 TPR 리포트 Undo Statistics 섹터에서 최대 부하 구간에서 의 Undo blocks / 트랜잭션 수행 시간(초) 으로 계산
UNDO_RETENTION
undo extent를 재사용하거나 반환하지 않도록 유지 시켜주는 시간, 기본 900초
여유값
필요하다면 충분한 여유값을 두는 것이 좋음
다음은 위 항목을 토대로 Undo 테이블 스페이스 용량을 계산하는 공식입니다.
Undo Segment 1개 생성 시 필요한 용량 = DB_BLOCK_SIZE(블록 사이즈, 기본 8KB) * _USGMT_UNI FORM_EXTSIZE(기본 512) * 2 = 8MB
최소 크기 = USGMT_ONLINE_MIN * Undo Segment 1개 생성 시 필요한 용량
예상 크기 = MAX_SESSION_COUNT * Undo Segment 1개 생성 시 필요한 용량 + 여유값
실제 사용 크기 = 초당 Undo block 소모량 * UNDO_RETENTION * DB_BLOCK_SIZE
Last updated

