Oacle 데이터베이스 파 티 션 의 몇 가지 방식

범위 분할
각 파 티 션 은 하나의 파 티 션 키 범위 로 지정 되 어 있 습 니 다.
목록 파 티 션
각 파 티 션 은 하나의 파 티 션 키 목록 으로 지정 되 어 있 습 니 다.
산열 구역
해시 알고리즘 을 파 티 션 키 로 지정 한 줄 이 있 는 파 티 션 을 확인 합 니 다.
조합 범위 산열 구역
범위 와 산열 구역 구분 기술 의 조합 은 이 조합 을 통 해 먼저 표 에 대해 범위 구역 을 나 눈 다음 에 각 단독 범위 구역 에 대해 산열 구역 구분 기술 을 사용 하여 더욱 세분 화 한다.색인 조직 표 는 범위 구분 만 할 수 있 습 니 다.
조합 범위 목록 파 티 션
범위 와 목록 파 티 션 기술 의 조합 은 이 조합 을 통 해 먼저 표 에 대해 범위 파 티 션 을 한 다음 에 각 단독 범위 파 티 션 에 대해 목록 파 티 션 기술 을 사용 하여 세분 화 합 니 다.색인 조직 표 는 범위, 목록 또는 산열 에 따라 구역 을 나 눌 수 있다.
1. 범위 파 티 션: 범위 파 티 션 은 데 이 터 를 범위 에 따라 모든 파 티 션 에 표시 합 니 다. 이 범 위 는 파 티 션 을 만 들 때 지정 한 파 티 션 키 로 결 정 됩 니 다.이런 파 티 션 방식 은 가장 자주 사용 되 고 파 티 션 키 는 항상 날 짜 를 사용한다.예 를 들 어 판매 데 이 터 를 월 별로 구분 할 수 있 습 니 다.범위 구역 을 사용 할 때 다음 과 같은 몇 가지 규칙 을 고려 하 십시오. 1. 각 구역 마다 VALUES LESS THEN 자구 가 있어 야 합 니 다. 이 구역 에 포함 되 지 않 는 상한 값 을 지정 합 니 다.파 티 션 키 의 모든 값 이 이 상한 치 보다 크 거나 같은 기록 은 다음 높 은 파 티 션 에 추 가 됩 니 다.2. 모든 파 티 션 은 첫 번 째 를 제외 하고 암시 적 인 하한 값 이 있 습 니 다. 이 값 은 바로 이 파 티 션 의 이전 파 티 션 의 상한 값 입 니 다.3. 가장 높 은 구역 에서 MAXVALUE 가 정의 된다.MAXVALUE 는 불확실 한 값 을 대표 합 니 다.이 값 은 다른 파 티 션 의 모든 파 티 션 키 보다 높 고 모든 파 티 션 에서 지정 한 VALUE LESS THEN 보다 높 은 값 으로 이해 할 수 있 으 며 빈 값 도 포함 합 니 다.
예 1: 만약 에 CUSTOMER 표 가 있다 고 가정 하면 표 에 데이터 20000 줄 이 있 습 니 다. 우 리 는 이 표를 CUSTOMER 을 통 해ID 는 구역 을 나 누고 각 구역 은 100000 줄 을 저장 합 니 다. 우 리 는 각 구역 을 하나의 표 공간 에 저장 합 니 다. 그러면 데이터 파일 은 여러 개의 물리 디스크 를 뛰 어 넘 을 수 있 습 니 다.다음은 테이블 과 파 티 션 을 만 드 는 코드 입 니 다. 다음 과 같 습 니 다: CREATE TABLE CUSTOMER  (      CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,      FIRST_NAME VARCHAR2(30) NOT NULL,      LAST_NAME   VARCHAR2(30) NOT NULL,      PHONE        VARCHAR2(15) NOT NULL,      EMAIL        VARCHAR2(80),      STATUS       CHAR(1)  )  PARTITION BY RANGE (CUSTOMER_ID)  (      PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,      PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02  ) 예 2: 시간 에 따라 CREATE TABLE ORDER ACTIVITIES  (      ORDER_ID      NUMBER(7) NOT NULL,      ORDER_DATE    DATE,      TOTAL_AMOUNT NUMBER,      CUSTOTMER_ID NUMBER(7),      PAID           CHAR(1)  )  PARTITION BY RANGE (ORDER_DATE)  ( PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACEORD_TS01, PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02, PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03 )
예 3: MAXVALUE CREATE TABLE RangeTable (  idd INT PRIMARY KEY ,  iNAME VARCHAR(10),  grade INT  )  PARTITION BY RANGE (grade)  (        PARTITION part1 VALUES LESS THEN (1000) TABLESPACE Part1_tb,        PARTITION part2 VALUES LESS THEN (MAXVALUE) TABLESPACE Part2_tb  );
2. 목록 파 티 션: 이 파 티 션 의 특징 은 특정한 열의 값 이 몇 개 밖 에 없다 는 것 입 니 다. 이러한 특징 을 바탕 으로 우 리 는 목록 파 티 션 을 사용 할 수 있 습 니 다. 예 를 들 어 CREATE TABLE PROBLEM TICKETS  (      PROBLEM_ID   NUMBER(7) NOT NULL PRIMARY KEY,      DESCRIPTION VARCHAR2(2000),      CUSTOMER_ID NUMBER(7) NOT NULL,      DATE_ENTERED DATE NOT NULL,      STATUS       VARCHAR2(20)  )  PARTITION BY LIST (STATUS)  (        PARTITION PROB_ACTIVE   VALUES ('ACTIVE') TABLESPACE PROB_TS01,        PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02
); 예 2 CREATE TABLE ListTable (      id    INT PRIMARY KEY ,      name VARCHAR (20),      area VARCHAR (10)  )  PARTITION BY LIST (area)  (      PARTITION part1 VALUES ('guangdong','beijing') TABLESPACE Part1_tb,      PARTITION part2 VALUES ('shanghai','nanjing') TABLESPACE Part2_tb  );
3. 해시 파 티 션: 이러한 파 티 션 은 열 값 에 해시 알고리즘 을 사용 하여 줄 을 어느 파 티 션 에 넣 는 지 확인 합 니 다. 열 값 이 적당 한 조건 이 없 을 때 해시 파 티 션 을 사용 하 는 것 을 권장 합 니 다. 해시 파 티 션 은 지정 한 파 티 션 번 호 를 통 해 데 이 터 를 고 르 게 분포 하 는 파 티 션 형식 입 니 다. I / O 장치 에서 해시 파 티 션 을 진행 하여 이 파 티 션 의 크기 를 일치 시 킵 니 다. 예 1: CREATE TABLE HASH_TABLE  (  COL NUMBER(8),  INF VARCHAR2(100)  )  PARTITION BY HASH (COL)  (  PARTITION PART01 TABLESPACE HASH_TS01,  PARTITION PART02 TABLESPACE HASH_TS02,  PARTITION PART03 TABLESPACE HASH_TS03  ) 약자: CREATE TABLE emp (CREATE TABLE emp)    empno NUMBER (4),     ename VARCHAR2 (30),     sal   NUMBER  ) PARTITION BY HASH (empno) PARTITIONS 8 STORE IN (emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8);
hash 파 티 션 의 가장 중요 한 메커니즘 은 hash 알고리즘 에 따라 구체 적 인 기록 을 어느 파 티 션 에 삽입 해 야 하 는 지 계산 하 는 것 입 니 다. hash 알고리즘 에서 가장 중요 한 것 은 hash 함수 입 니 다. Oracle 에서 hash 파 티 션 을 사용 하려 면 파 티 션 의 수량 만 지정 하면 됩 니 다. 파 티 션 의 수량 은 2 의 n 제곱 을 사용 하 는 것 을 권장 합 니 다. 그러면 각 파 티 션 간 데이터 분 포 를 더욱 고 르 게 할 수 있 습 니 다.
4. 조합 구역
(범위 - 산열 구역, 범위 - 목록 구역)
범위 - 산열 구역
create table graderecord  
(  
  sno varchar2(10),  
  sname varchar2(20),  
  dormitory varchar2(3),  
  grade int  
)  
partition by range(grade)  
subpartition by hash(sno,sname)  
(  
  partition p1 values less than(75)  
            (  
               subpartition sp1,subpartition sp2  
            ),  
  partition p2 values less than(maxvalue)  
            (  
               subpartition sp3,subpartition sp4  
            )  
);  

 grade 로 범 위 를 구분 한 다음 에 sno 와 sname 로 해시 구역 을 나 누고 데이터 양 이 많 을 때 해시 구역 은 '평균' 으로 나 뉜 다.
범위 - 목록 파 티 션
create table MobileMessage  
(  
 ACCT_MONTH VARCHAR2(6), --      :   YYYYMM  
 AREA_NO VARCHAR2(10), --        
 DAY_ID VARCHAR2(2), --            DD  
 SUBSCRBID VARCHAR2(20), --        
 SVCNUM VARCHAR2(30) --       
)  
partition by range(ACCT_MONTH,AREA_NO) subpartition by list(DAY_ID)  
(  
  partition p1 values less than('200705','012')  
  (  
    subpartition shangxun1 values('01','02','03','04','05','06','07','08','09','10'),  
    subpartition zhongxun1 values('11','12','13','14','15','16','17','18','19','20'),  
    subpartition xiaxun1 values('21','22','23','24','25','26','27','28','29','30','31')  
  ),  
  partition p2 values less than('200709','014')  
  (  
    subpartition shangxun2 values('01','02','03','04','05','06','07','08','09','10'),  
    subpartition zhongxun2 values('11','12','13','14','15','16','17','18','19','20'),  
    subpartition xiaxun2 values('21','22','23','24','25','26','27','28','29','30','31')  
  ),  
  partition p3 values less than('200801','016')  
  (  
    subpartition shangxun3 values('01','02','03','04','05','06','07','08','09','10'),  
    subpartition zhongxun3 values('11','12','13','14','15','16','17','18','19','20'),  
    subpartition xiaxun3 values('21','22','23','24','25','26','27','28','29','30','31')  
  )  
)  

좋은 웹페이지 즐겨찾기