조회 수 10338 추천 수 0 댓글 1
파티션 테이블 종류가 뭐가 있나요?
  • 관리자 2011.06.13 00:07

    - Range Partition

    날짜 기준 Partition, Historical Data Table에 적합

    Table은 논리적인 구조일 뿐 실제 데이터의 물리적 저장소는

    partition으로 나누어진 tablespace에 저장

    데이터가 범위에 대하여 균등하게 분산되어 있는 경우 Range Partition 성능이 가장 뛰어나다

     

    CREATE TABLE PARTITION_BY_RANGE

    ( FIRST_NAME VARCHAR2(10),

    MIDDLE_INIT VARCHAR2(1),

    LAST_NAME VARCHAR2(10),

    BIRTH_MM INT NOT NULL,

    BIRTH_DD INT NOT NULL,

    BIRTH_YYYY INT NOT NULL)

    PARTITION BY RANGE (BIRTH_YYYY, BIRTH_MM, BIRTH_DD)

    (PARTITION DOBS_IN_1971_OR_BEFORE VALUES LESS THAN (1972, 01 ,01) TABLESPACE TS01,

    PARTITION DOBS_IN_1972 VALUES LESS THAN (1973, 01 ,01) TABLESPACE TS02,

    PARTITION DOBS_IN_1973 VALUES LESS THAN (1974, 01 ,01) TABLESPACE TS03,

    PARTITION DOBS_IN_1974 VALUES LESS THAN (1975, 01 ,01) TABLESPACE TS04,

    PARTITION DOBS_IN_1975_OR_LATER VALUES LESS THAN (MAXVALUE, MAXVALUE, MAXVALUE)

    TABLESPACE TS05)

    ENABLE ROW MOVEMENT;

     

    - Hash Partition

    Partition Key Hash값에 의한 Partitioning(균등한 데이터 분할도를 이용한 병렬처리로 성능향상)

    Select시 조건과 무관하게 병렬 Degree 제공(질의 성능 향상)

    특정 Data가 어느 Hash Partition에 있는지 판단 불가

    파티션의 수를 2의 제곱근(2,4,8,16,...) 으로 설정해야 하며 data가 어떤 파티션에 저장 되는지

    알수없음(조회시 가능)

    NULL 값은 첫 번째 파티션에 위치하게 됨. 데이터 이력관리 목적보다 성능 향상 목적

    CREATE TABLE PARTITION_BY_HASH

    (FIRST_NAME VARCHAR2(10),

    MIDDLE_INIT VARCHAR2(1),

    LAST_NAME VARCHAR2(10),

    AGE INT NOT NULL)

    PARTITION BY HASH (AGE)

    (PARTITION P1_AGE TABLESPACE TS01,

    PARTITION P2_AGE TABLESPACE TS02,

    PARTITION P3_AGE TABLESPACE TS03,

    PARTITION P4_AGE TABLESPACE TS04)

    ENABLE ROW MOVEMENT;

     

    - List Partition

    특정 Partition에 저장 될 Data에 대한 명시적 제어 가능

    분포도가 비슷하며, SQL에서 해당 Column의 조건이 많이 들어오는 경우 유용함

    Multi-Column Partition Key 제공 불가

    Partition key 값은 NULL 값 또한 명시 가능하며, NULL 값을 포함한 어떠한 값이라도

    한번망 명시할 수 있음

    CREATE TABLE PARTITION_BY_LIST

    (DEPTID NUMBER,

    DEPTNAME VARCHAR2(15),

    STATE VARCHAR2(2) ,

    CONSTRAINT PARTITION_BY_LIST_PK PRIMARY KEY (DEPTID))

    PARTITION BY LIST (STATE)

    (PARTITION DEPTS_IN_NORTH VALUES ('AK') TABLESPACE TS01,

    PARTITION DEPTS_IN_EAST VALUES ('NY', 'NJ', 'VA', 'CT') TABLESPACE TS02,

    PARTITION DEPTS_IN_SOUTH VALUES ('TX', 'MS', 'GA', 'KY') TABLESPACE TS03,

    PARTITION DEPTS_IN_WEST VALUES ('CA', 'AZ', 'OR', 'NV') TABLESPACE TS04,

    PARTITION DEPTS_WITH_NO_REGION VALUES (DEFAULT) TABLESPACE TS05)

    ENABLE ROW MOVEMENT;

     

    - Range-Hash Partition

    범위 방식으로 행들을 맵핑하고, 각 범위 파티션 내에서 해시 서브 파티션을 생성한다.

    이러한 형시의 복합 파티션은 이력 데이터를 분산하는데 이상적이다

    CREATE TABLE PARTITION_BY_RANGE_HASH

    ( FIRST_NAME VARCHAR2(10),

    MIDDLE_INIT VARCHAR2(1),

    LAST_NAME VARCHAR2(10),

    BIRTH_MM INT NOT NULL,

    BIRTH_DD INT NOT NULL,

    BIRTH_YYYY INT NOT NULL)

    TABLESPACE USERS

    PARTITION BY RANGE (BIRTH_YYYY, BIRTH_MM, BIRTH_DD)

    SUBPARTITION BY HASH(FIRST_NAME, MIDDLE_INIT, LAST_NAME)

    SUBPARTITION TEMPLATE(

    SUBPARTITION SP1 TABLESPACE TS01,

    SUBPARTITION SP2 TABLESPACE TS02,

    SUBPARTITION SP3 TABLESPACE TS03,

    SUBPARTITION SP4 TABLESPACE TS04,

    SUBPARTITION SP5 TABLESPACE TS05)

    (PARTITION DOBS_IN_1971_OR_BEFORE VALUES LESS THAN (1972, 01 ,01),

    PARTITION DOBS_IN_1972 VALUES LESS THAN (1973, 01 ,01),

    PARTITION DOBS_IN_1973 VALUES LESS THAN (1974, 01 ,01),

    PARTITION DOBS_IN_1974 VALUES LESS THAN (1975, 01 ,01),

    PARTITION DOBS_IN_1975_OR_LATER VALUES LESS THAN (MAXVALUE, MAXVALUE,

    MAXVALUE))

    ENABLE ROW MOVEMENT;

     

    - Range-List Partition

    값의 범위에 따라 행을 맵핑하고, 그 다음은 이산 값을 기준으로 맵핑한다

    이러한 형식의 복합 파티션은 데이터가 서브 파티션의 세그먼트에 저장되기 대문에

    오로지 논리적 구조로만 볼 수 있다

    CREATE TABLE PARTITION_BY_RANGE_LIST

    ( FIRST_NAME VARCHAR2(10),

    MIDDLE_INIT VARCHAR2(1),

    LAST_NAME VARCHAR2(10),

    BIRTH_MM INT NOT NULL,

    BIRTH_DD INT NOT NULL,

    BIRTH_YYYY INT NOT NULL,

    STATE VARCHAR2(2) NOT NULL)

    TABLESPACE USERS

    PARTITION BY RANGE (BIRTH_YYYY, BIRTH_MM, BIRTH_DD)

    SUBPARTITION BY LIST (STATE)

    SUBPARTITION TEMPLATE

    (SUBPARTITION IN_NORTH VALUES ('AK') TABLESPACE TS01,

    SUBPARTITION IN_EAST VALUES ('NY', 'NJ', 'VA', 'CT') TABLESPACE TS02,

    SUBPARTITION IN_SOUTH VALUES ('TX', 'MS', 'GA', 'KY') TABLESPACE TS03,

    SUBPARTITION IN_WEST VALUES ('CA', 'AZ', 'OR', 'NV') TABLESPACE TS04,

    SUBPARTITION NO_STATE VALUES (DEFAULT) TABLESPACE TS05)

    (PARTITION DOBS_IN_1971_OR_B4 VALUES LESS THAN (1972, 01 ,01),

    PARTITION DOBS_IN_1972 VALUES LESS THAN (1973, 01 ,01),

    PARTITION DOBS_IN_1973 VALUES LESS THAN (1974, 01 ,01),

    PARTITION DOBS_IN_1974 VALUES LESS THAN (1975, 01 ,01),

    PARTITION DOBS_IN_1975_TO_MAX VALUES LESS THAN (MAXVALUE, MAXVALUE, MAXVALUE))

    ENABLE ROW MOVEMENT;


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 Q&A Oracle관련 게시물만 Sean 2014.04.09 84839
160 Tip 화일의 손상 여부를 확인하는 dbv 사용 방법 김준호 2010.04.06 18472
159 Tip 핫백업 디비올리기 유주환 2010.04.09 34980
158 Q&A 패키지 BODY 관련 질문 3 고구마 2011.05.03 10162
157 Q&A 파티션 테이블에 대해서 몇가지 궁금합니다. 1 고구마 2011.06.13 11694
» Q&A 파티션 테이블 종류가 뭐가 있나요? 1 고구마 2011.06.13 10338
155 Tip 특정 DB USER의 SESSION수를 제한하는 방법 흑수건 2011.10.01 12356
154 Tip 통계복원하기 고구마 2013.05.13 8032
153 Tip 통계 백업 및 생성 유주환 2010.04.18 16172
152 TM 테이블과 인덱스의 관계 및 인덱스 종류 및 생성 방법. Tech1 2012.03.28 25499
151 TM 테이블 생성방법 및 각종옵션 Tech1 2012.03.20 20703
150 Tip 쿼리 튜닝 사례 고구마 2011.03.21 14449
149 Tip 유저별 Segment 개수 및 사이즈 조회 쿼리, n2bfree 2013.03.12 10925
148 Tip 윈도우에서 일정기간 지난 파일 및 폴더 자동삭제 하기 1 송기성 2011.03.31 21209
147 자료 윈도우 tail 사용법 1 file 유주환 2010.04.19 7361
146 Tip 오라클상세 버젼 확인하기 lsinventory 고구마 2011.09.14 13837
145 Tip 오라클11g에서 SE1,SE,EE제품의 옵션비교입니다. file perfstat 2012.03.07 27004
144 Q&A 오라클 프로세스에 대해서 궁금합니다. 4 고구마 2011.05.04 11170
143 Tip 오라클 튜닝 세미나자료 (메모리) file 고구마 2010.04.28 14662
142 Tip 오라클 튜닝 세미나 자료(IO) 1 file 고구마 2010.04.28 13927
141 Tip 오라클 제품 비교 file 송기성 2011.05.22 13410
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8