본 장에서는 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) |