| |||||||||||||||||||||
IBM® DB2® for Linux®, UNIX® and Windows® V9.7에서는
파티션
테이블에서의
데이터와 REORG 색인
지원, 파티션
분할된
색인(로컬
색인), XML과의
통합
및 DETACH를
사용한
온라인
롤아웃과
같은
몇
가지
주요
테이블
파티셔닝
기능이
개선되었습니다. 이
기사에서는
데이터
웨어하우스
환경에서
이러한
애플리케이션의
기능을
살펴보고
파티션
분할된
색인을
활용하여
활성
로그
공간을
줄이면서 ATTACH를
사용하는
데이터
롤인을
어떻게
신속하게
크기순으로
정렬할
수
있는지
확인합니다. 또한, 이
기사에는
테이블
파티셔닝과
관련된
몇
가지
일반적인
질문사항을
다룬
섹션이
포함되어
있습니다.
|
CREATE TABLE purchaseOrders ( po_id INT, po_date DATE, po_customer
CHAR(200),
po_item VARCHAR(20),po_quantity INT, po_price DECFLOAT
)
INDEX IN
global_index_tbsp
PARTITION BY
(po_date)
(PARTITION jan2010 STARTING ('1/1/2010')
ENDING '1/31/2010' IN jan2010_data_tbsp
INDEX
IN jan2010_index_tbsp,
PARTITION feb2010
STARTING ('2/1/2010') ENDING '2/28/2010' IN
feb2010_data_tbsp
INDEX IN
feb2010_index_tbsp,
PARTITION mar2010
STARTING ('3/1/2010') ENDING '3/31/2010' IN
mar2010_data_tbsp
INDEX
IN mar2010_index_tbsp);
CREATE INDEX purchaseOrdersIndex1 ON purchaseOrders(po_customer)
PARTITIONED;
|
로컬
색인을
사용하면
데이터
롤인과
롤아웃을
효율화할
수
있다. 롤인의
경우, 연결될
테이블에
있는
색인이
새
파티션의
로컬
색인이
되도록
활용된다. (이점은
다음
섹션에서
자세히
살펴본다.) 롤아웃의
경우, 분리될
파티션에
있는
로컬
색인이
분리된
독립형
테이블의
색인이
된다.
DB2에서의
롤인은 ATTACH를
사용하며
두
단계의
조작으로
수행된다.
1. 먼저, ALTER TABLE ATTACH PARTITION 명령에
의해
기존
테이블이
새로운
데이터
파티션으로
파티션된
테이블에
통합된다.
2. 그런
다음, SET INTEGRITY 명령이
무결성
처리를
초기화하고
글로벌
색인을
유지보수한다.
새로
추가된
데이터는
두
번째
단계가
정상적으로
완료된
후에만
볼
수
있다. 글로벌
색인이
있는
상태에서 SET INTEGRITY를
수행하려면
글로벌
색인을
점진적으로
유지보수하기
위해
상당한
양의
활성
로그
공간이
필요하며
또한, 새로
추가된
데이터
양에
비례하여
실행하는
데
오랜
시간이
필요할
수
있다. 그림 1에는 DB2 9.7 이전
버전에서
글로벌
색인을
사용하여
롤인
조작을
하는
과정이
표시되어
있다.
그림 1. 글로벌 색인을 사용한 롤인

로컬
색인을
사용하면
롤인에
걸리는
시간이
크기에
따라
감소된다. 파티션된
테이블에
있는
기존
로컬
색인과
일치하는
모든
색인(첨부될
테이블에
있는)을
활용할
수
있다. 데이터
롤인
속도
개선과
관련된
베스트
프랙티스에서는
롤인하기
전에
파티션된
테이블에
있는
모든
로컬
색인과
정확히
일치하는
색인이
첨부될
테이블에
있는지
확인한다. 그림 2에는
이러한
베스트
프랙티스가
표시되어
있다.
그림 2. 로컬 색인을 사용한 롤인

이러한
베스트
프랙티스를
따르지
않더라도
일반적으로
로컬
색인만
있는
경우에는
여전히
롤인에
걸리는
시간이
상당히
줄어든다. 자세히
말하자면
파티션된
대상
테이블의
로컬
색인과
일치하는
색인이
첨부될
테이블에
없으면
새
파티션의
로컬
색인
오브젝트가
잘못됨으로
표시되며
이
파티션의
로컬
색인은 SET INTEGRITY 과정에서
작성된다. 이
로컬
색인은
새로
첨부된
파티션에서만
작성되고
매우
제한된
로깅을
필요로
하기
때문에
글로벌
색인과
비교하여
여전히 SET INTEGRITY가
상당히
빠르게
실행된다.
표1에는
롤인에
대한
베스트
프랙티스가
요약되어
표시되어
있다.
표 1. 롤인에 대한 베스트 프랙티스
단계 | 설명 | 예제 | 주석 |
1. | 대상 테이블에 있는 모든 로컬 색인과 일치하지 않는 색인을 원본 테이블에서 삭제 | DROP INDEX srcidx_po_price | 빠른 DDL |
2. | 대상 테이블에 있는 로컬 색인과 일치시키기 위해 원본 테이블에서 누락된 색인을 작성 | CREATE INDEX srcidx_po_customer ON Apr2010(po_customer) | AND는 비교적 부담이 덜하고 대상 테이블에 영향을 주지 않음 |
3. | ATTACH 파티션 | ALTER TABLE purchaseOrders ATTACH PARTITION Apr2010 STARTING '4/1/2010' ENDING '4/30/2010' FROM Apr2010 | 빠른 DDL |
4. | SET INTEGRITY | SET INTEGRITY FOR purchaseOrders IMMEDIATE CHECKED | 새 테이블 데이터를 간단히 스캔하여 모든 행이 범위 내에 있는지 검사하고 제약조건이 있으면 이를 강제로 시행 |
댓글 없음:
댓글 쓰기