자동 테이블 및 인덱스 유지보수
테이블 데이터에 대한 많은 변경 후, 테이블 및 해당 인덱스가 분할될 수 있습니다. 논리적 순차 데이터가 비연속 페이지에 상주할 수 있으므로, 데이터베이스 관리자가 추가 읽기 조작을 수행하여 데이터에 액세스해야 합니다.
RUNSTATS 유틸리티에 의해 수집된 통계 정보는 테이블 내 데이터의 분산을 표시합니다. 이러한 통계를 분석하면 언제, 어떤 유형의 재구성이 필요한지 알 수 있습니다.
자동 재구성 프로세스는 REORGCHK 유틸리티에 속한 공식을 사용하여 테이블 또는 인덱스 재구성이 필요한지 판별합니다. 이 프로세스는 통계를 갱신한 테이블 및 인덱스를 주기적으로 평가하여 재구성이 필요한지 여부를 확인하고, 필요할 때마다 이러한 조작을 스케줄합니다.
자동 재구성 기능은 auto_reorg, auto_tbl_maint 및 auto_maint 데이터베이스 구성 매개변수를 통해 사용 또는 사용 안함으로 설정할 수 있습니다.
자동 재구성은 REORG 유틸리티를 사용하여 REORGCHK에 따라 권장 재구성을 수행합니다. 테이블은 REORG TABLE을 CLASSIC 옵션과 함께 사용하여 재구성되는 한편, 인덱스는 REORG INDEX/INDEXES를 REBUILD 옵션과 함께 사용합니다.
파티션된 데이터베이스 환경에서 자동 재구성의 초기화가 카탈로그 데이터베이스 파티션에서 수행됩니다. 이 구성 매개변수는 카탈로그 데이터베이스 파티션에서만 사용 가능합니다. 그러나 REORG 조작은 대상 테이블이 있는 모든 데이터베이스 파티션에서 실행됩니다.
인덱스 재구성은 REORG INDEX/INDEXES를 ALLOW WRITE ACCESS 옵션과 함께 사용하여 온라인 방식으로 발생할 수 있습니다.
사용자는 다차원 클러스터링(MDC), 삽입 시간 클러스터링(ITC) 테이블 및 컬럼 구성 테이블을 재구성하여 스페이스를 재확보할 수 있습니다. MDC 및 ITC 테이블에서 익스텐트 비우기는 DMS 테이블스페이스 및 자동 스토리지의 테이블에 대해서만 지원됩니다. MDC, ITC 테이블 및 컬럼 구성 테이블에서 익스텐트 비우기는 REORG TABLE 명령의 RECLAIM EXTENTS 옵션을 사용하여 온라인 방식으로 수행될 수 있습니다.
인덱스에서 스페이스를 재확보하기 위해 대체 수단을 스케줄할 수도 있습니다. REORG INDEX 명령에는 space-reclaim-options를 지정할 수 있는 인덱스 절이 있습니다. space-reclaim-options에 REORG EXTENTS를 지정한 경우 스페이스가 온라인 방식으로 다시 테이블스페이스에 릴리스됩니다. 이 조작을 수행하면 인덱스 전체를 재빌드하지 않아도 스페이스를 재확보할 수 있습니다. REORG INDEX 명령의 REBUILD 옵션도 스페이스를 재확보하지만 반드시 온라인 방식으로 확보하지 않습니다.
데이터 파티션된 테이블에 대한 자동 재구성
Db2® 버전 9.7 수정팩 1이전 릴리스의 경우, 자동 재구성은 전체 테이블에 대한 데이터 파티션된 테이블의 재구성을 지원합니다. DB2 V9.7 수정팩 1 이상 릴리스의 경우, 자동 재구성은 파티션된 테이블에서 데이터 파티션의 데이터를 재구성하고 파티션된 테이블의 데이터 파티션에서 파티션된 인덱스를 재구성하여 지원합니다.
전체 데이터 파티션된 테이블이 ALLOW NO ACCESS 모드로 저장되지 않도록 하기 위해, 자동 재구성은 재구성해야 하는 파티션된 인덱스에 대해 데이터 파티션 레벨로 REORG INDEXES ALL 조작을 수행합니다. 재구성해야 하는 파티션되지 않은 인덱스에 대해서는 자동 재구성은 REORG INDEX 조작을 수행합니다.
- 파티션되지 않은 인덱스 (시스템 생성 XML 경로 인덱스 제외) 가 테이블에 정의되어 있고 재구성해야 하는 파티션이 하나만 있는 경우, 자동 재구성은 ON DATA PARTITION 절을 사용하여 REORG TABLE 조작을 수행하여 재구성해야 하는 파티션을 지정합니다. 그렇지 않으면 자동 재구성은 ON DATA PARTITION 절 없이 전체 테이블에서 REORG TABLE 을 수행합니다.
- 파티션되지 않은 인덱스 (시스템 생성 XML 경로 인덱스 제외) 가 테이블에 정의되지 않은 경우, 자동 재구성은 재구성해야 하는 각 파티션에서 ON DATA PARTITION 절을 사용하여 REORG TABLE 조작을 수행합니다.
소멸성 테이블에 대한 자동 재구성
소멸성 테이블의 자동 인덱스 재구성을 사용 가능하게 할 수 있습니다. 자동 재구성 프로세스에서는 소멸성 테이블에 인덱스 재구성이 필요한지의 여부를 판별하고 REORG INDEX CLEANUP을 스케줄합니다. 인덱스 재구성이 소멸성 테이블에서 주기적으로 수행되고 이러한 테이블에 정의된 인덱스에서 재사용할 수 있는 스페이스를 해제합니다.
통계는 자주 갱신되기 때문에 소멸성 테이블에서 수집할 수 없습니다. 재구성해야 할 인덱스를 판별하기 위해, 자동 재구성은 REORGCHK 대신 numInxPseudoEmptyPagesForVolatile 속성을 사용합니다. 의사 비어 있는 페이지 개수는 내부적으로 유지되고 mon_get_index를 통해 표시되며, REORGCHK 같은 RUNSTATS 조작이 필요하지 않습니다. AUTO_REORG 정책에서 이 속성은 인덱스 재구성을 트리거하기 위해 인덱스에 있어야 할 의사 삭제된 키와 함께 비어 있는 인덱스 페이지 수를 표시합니다.
- DB2_WORKLOAD 레지스트리 변수는 SAP로 설정되어야 합니다.
- 자동 재구성을 사용 가능하게 해야 합니다.
- numInxPseudoEmptyPagesForVolatile 속성을 설정해야 합니다.