명백한 것 외에도 다중 열 파티셔닝과 서브 파티셔닝의 차이점은 누구나 설명 할 수 있습니까? OLTP 시나리오에서 어느 것이 더 낫습니까? 자세한 내용은 Oracle Database Administrator 's Guide의 Managing Partitioned Tables and Indexes을 참조하십시오. 여러 칼럼에 파티션 테이블오라클 다중 열 파티셔닝 대 서브 파티션 사용
A (벙어리) 예제이다
CREATE TABLE demo1
(
year NUMBER,
month NUMBER,
day NUMBER,
instance NUMBER, /* assuming this can only be 1 or 2 */
other1 VARCHAR2(50),
other2 VARCHAR2(50),
other3 VARCHAR2(50)
)
PARTITION BY RANGE (year,instance)
(
PARTITION data_2009_inst1 VALUES less than (2009,2) TABLESPACE data_2009,
PARTITION data_2009_inst2 VALUES less than (2009,3) TABLESPACE data_2009,
PARTITION data_2010_inst1 VALUES less than (2010,2) TABLESPACE data_2010,
PARTITION data_2010_inst2 VALUES less than (2010,3) TABLESPACE data_2010,
PARTITION data_2011_inst1 VALUES less than (2011,2) TABLESPACE data_2011,
PARTITION data_2011_inst2 VALUES less than (2011,3) TABLESPACE data_2011
);
마찬가지로 subpartitioned 테이블의 예이다 :
이제 이들 테이블 간의 차이가 무엇CREATE TABLE demo2
(
year NUMBER,
month NUMBER,
day NUMBER,
instance NUMBER, /* assuming this can only be 1 or 2 */
other1 VARCHAR2(50),
other2 VARCHAR2(50),
other3 VARCHAR2(50)
)
PARTITION BY RANGE (year)
SUBPARTITION BY LIST (instance) /* Cannot subpartition by range in 10gR2 */
SUBPARTITION template
(
SUBPARTITION i1 VALUES (1),
SUBPARTITION i2 VALUES (2),
SUBPARTITION ix VALUES (DEFAULT)
)
(
PARTITION data_2009 VALUES less than (2010) TABLESPACE data_2009,
PARTITION data_2010 VALUES less than (2011) TABLESPACE data_2010,
PARTITION data_2011 VALUES less than (2012) TABLESPACE data_2011
);
? 그들은 "논리적으로"같은 것이 아닌가? 시간이 지날수록 더 많은 파티션을 얻기 위해 demo1에서 파티션을 분할해야하므로 demo2에 파티션을 추가하는 것이 훨씬 쉽습니다. 어느 것이 OLTP 시나리오에서 더 낫습니까?
참고로 INSTANCE 번호를 파티셔닝하는 이유는 Oracle RAC와 관련이 있습니다. "인스턴스 블록"이 RAC 노드 간의 상호 연결을 통해 전송 될 필요가있을 때 데이터베이스를 느리게하는 것을 막기 위해 "인스턴스 선호도"를 만들려고합니다. (우리는 이것이 우리의 테스트에서 차이가 있음을 경험적으로 입증했다).