본 부록에서는 Tibero의 Undo 테이블 스페이스 크기 산정방법에 대해 설명한다.
데이터이 갱신이 많은 시스템인 경우 Undo 테이블 스페이스의 I/O가 많이 발생하므로 Undo 테이블 스페이스를 여러 개의 데이터 파일로 작성하여 데이터 파일을 분산시킨다.
자동 관리는 다음의 장점을 갖는다.
설계 및 관리 용이(rollback,segment)
UNDO Data의 overwrite 방지
영역확장 용이
플래시백 쿼리 이용가능
Tibero는 수동 관리는 지원하지 않는다.
다음은 Undo 테이블 스페이스 크기를 산정할 때 고려할 사항이다.
데이터 파일 용량, UNDO_RETENTION, Undo Segment를 고려한다.
자동 관리일 경우 Undo Segment의 개별 공간은 자동으로 관리되므로 전체 Undo Segment의 최소/최 대 개수와 데이터 파일 용량만 설정한다.
최소 Undo Segment 개수(USGMT_ONLINE_MIN)는 보통 10(default)으로 설정한다. 단, 동시 수행 트랜잭션 수가 많은 경우 부하 중에 추가 Undo Segment를 생성하는 오버헤드가 있을 수 있다. 이 경우 예상되는 동시 수행 트랜잭션 수 만큼 최소 Undo Segment 개수를 설정해두면 Undo Segment 추가 생성 오버헤드를 줄일 수 있다.
최소 Undo Segment 설정 개수가 이미 만들어져 있는 Undo Segment 개수보다 많은 경우 부팅 과정에서 Undo Segment를 추가로 생성한다.
TAC의 경우 각 노드별로 적용한다. 예를 들어 NODE1은 USGMT_ONLINE_MIN=30, NODE2는 40으로 설정하고 부팅하면 각각 30개와 40개의 Undo Segment가 생성되어 있는 것을 확인할 수 있다.
최대 Undo Segment 개수(USGMT_ONLINE_MAX)는 최대로 생성할 수 있는 Undo Segment 개수를 말한다.
Tibero는 동시 수행 트랜잭션이 많은 경우 가능한 하나의 Undo Segment를 여러 트랜잭션이 공유하여 사용하지 않도록 자동적으로 Undo Segment를 추가 생성한다. 이런 경우 추가 생성하는 Undo Segment의 최대 값을 설정하는 용도로 USGMT_ONLINE_MAX를 설정하여 사용한다.
TAC의 경우 최대 Undo Segment 개수는 전체 노드에서 생성한 Undo Segment 개수의 합산값으로 적용한다. 예를 들어 NODE1에 Undo Segment가 100개, NODE2에 200개가 생성되어 있고, US GMT_ONLINE_MAX=300으로 설정되어있다면 양쪽 노드 모두 추가 Undo Segment를 생성할 수 없다. 따라서 전체 노드 합산 최대 동시 수행 트랜잭션 수를 USGMT_ONLINE_MAX로 설정할 것을 권장한다.
Undo 테이블 스페이스를 생성하는데 필요한 최소 크기와 예상 동시 수행 트랜잭션수를 기준으로 한 예상 크기, 그리고 TPR 정보를 이용한 실제 사용 크기로 나누어 생각해 볼 수 있다.
최초로 DB를 설치하는 경우 최소 크기 및 예상 크기중 큰 값을 기준으로 Undo 테이블 스페이스 크기를 산정하고 이후 TPR에서 최대 부하가 들어올 때 초당 소모하는 UNDO block 수를 기준으로 실제 크기와 산정한 크기가 맞는지 검증할 수 있다.
다음은 Undo 테이블 스페이스의 산정방법이다.
최소 크기
(Undo 테이블 스페이스당 Undo Segment 최소 개수 * _USGMT_UNIFORM_EXTSIZE * 2 * Block size(8KB)) + 여유값
예상 크기
(Undo 테이블 스페이스당 Undo Segment 최대 개수 * _USGMT_UNIFORM_EXTSIZE * 2 * Block size(8KB)) + 여유값
실제 크기
(초당 UNDO Block 소모량 * UNDO retention * Block size(8KB)) + 여유값
다음은 산정 공식에 사용되는 항목에 대한 설명이다.
항목 | 설명 |
---|---|
Undo 테이블 스페이스당 Undo Segment 최소 개수 | Single/TAC 모두 경우 USGMT_ONLINE_MIN 값이다. |
Undo 테이블 스페이스당 Undo Segment 최대 개수 | 예상되는 최대 동시 수행 트랜잭션 수이다.
|
_USGMT_UNIFORM_EXTSIZE | Undo Segment는 최소 2개의 UNDO extent가 필요하고 UNDO extent 하나의 크기는 _USGMT_UNIFORM_EXTSIZE이다. |
초당 UNDO block 소모량 | 운영 중 최대 부하 당시의 TPR 리포트에서 Undo Statistics의 Undo blocks 값을 TPR 구간(초)로 나눈 값이다. |
UNDO_RETENTION | TIP 설정 값이다. (기본값: 900초) |
여유값 | Long 트랜잭션이 비정기적으로 들어올 경우(INDEX rebuild 등도 포함)를 대비하여 충분한 크기를 잡아 두는 것이 좋다. (단위: KB) |