postgres 의 파티션 테이블 파티션 테이블 종류는 oracle과 흡사하다. 1. 지원 되는 파티션의 종류 ○ LIST 파티션 check 팀명 = 'SALES' check 지역 in ('SEOUL','BUSAN','JEJU') ○ RANGE 파티션 check 출생년도 >= 1990 and 출생년도 < 1996 ○ COMPOSITE 파티션 check 지역 in ('SEOUL','BUSAN','JEJU') + check 출생년도 >= 1990 and 출생년도 < 1996 2. InHerits (상속) ○ 부모테이블을 자신의 컬럼으로 저장 ○ 부보테이블에서 자식테이블 데이터 조회 ○ 부모테이블이 삭제 되면 자식테이블도 삭제 3, partition table 생성 CREATE TABLE measurement ( 기본이 되는 테이블(부모)를 우선 만든다. CREATE TABLE measurement_y2006m02 ( ) INHERITS (measurement); 부모테이블과 같은 구조로 자식테이블 생성. CREATE TABLE measurement_y2006m02 ( 자식테이블에 제약 조건을 걸어서 파티션 기능을 하도록 한다. CREATE INDEX measurement_y2006m02_logdate ON measurement_y2006m02 (logdate); 파티션 키 컬럼으로 로컬 인덱스 생성 CREATE OR REPLACE FUNCTION measurement_insert_trigger() 데이터를 삽입 하는 함수 생성. CREATE TRIGGER insert_measurement_trigger 트리거를 만들어서 데이터가 입력시 함수를 호출. CREATE OR REPLACE FUNCTION measurement_insert_trigger() 데이터가 특정 파티션에 들어갈 수 있도록 함수 생성. update 까지 관리 하려면... 4. Partitioning & Constraint exclusion Constraint exclusion 은 쿼리 성능 최적화 기술이다. SET constraint_exclusion = off;
QUERY PLAN constraint_exclusion 을 사용하지 않으면, 모든 파티션을 스캔. (파티션 테이블의 이점이 없음.) SET constraint_exclusion = on; constraint_exclusion 사용시 제약조건 배제로 필요 파티션만 스캔. 5. partition 관리 5.1. 파티션 삭제 DROP TABLE measurement_y2006m02; 파티션 테이블 및 데이터 까지 삭제. 5.2. 파티션 제거 ALTER TABLE measurement_y2006m02 NO INHERIT measurement; 안의 데이터는 유지한체 파티션 연결만 제거. 5.3. 파티션 추가 CREATE TABLE measurement_y2008m02 ( or CREATE TABLE measurement_y2008m02
6. 주의 사항 - GLOBAL INDEX 부재 - Local Index 자동 생성 되지 않음. - Trigger로 동작하므로, 파티션 추가시 trigger, function을 컴파일 해야 함. - DBA의 관리가 중요 (수작업이 많다.) |