수색…


소개

파티셔닝은 테이블과 인덱스를 더 작은 조각으로 분할하는 기능입니다. 성능을 향상시키고 작은 조각을 개별적으로 관리하는 데 사용됩니다. 파티션 키는 각 행이 저장 될 파티션을 정의하는 열 또는 열 세트입니다. 공식 오라클 문서에서의 파티셔닝 개요

비고

파티셔닝은 추가 비용 옵션이며 Enterprise Edition에서만 사용할 수 있습니다.

해시 파티셔닝

이 예제에서는 저장소 ID에 해시로 분할 된 테이블을 만듭니다.

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY HASH(store_id) PARTITIONS 8;

해시 파티션 수를 2로 설정하면 파티션 크기가 균등하게 분배됩니다.

범위 파티셔닝

이 예제에서는 범위 값에 따라 분할 된 테이블을 만듭니다.

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY RANGE(order_value) (
    PARTITION p1 VALUES LESS THAN(10), 
    PARTITION p2 VALUES LESS THAN(40), 
    PARTITION p3 VALUES LESS THAN(100),
    PARTITION p4 VALUES LESS THAN(MAXVALUE)
); 

기존 파티션 선택

스키마의 기존 파티션 확인

SELECT * FROM user_tab_partitions;

목록 분할

이 예제에서는 저장소 ID에 대해 목록별로 분할 된 테이블을 만듭니다.

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY LIST(store_id) (
    PARTITION p1 VALUES (1,2,3), 
    PARTITION p2 VALUES(4,5,6),
    PARTITION p3 VALUES(7,8,9),
    PARTITION p4 VALUES(10,11)
);

드롭 파티션

ALTER TABLE table_name DROP PARTITION partition_name;

파티션에서 데이터 선택

파티션에서 데이터 선택

SELECT * FROM orders PARTITION(partition_name);

파티션 잘라 내기

ALTER TABLE table_name TRUNCATE PARTITION partition_name;

파티션 이름 바꾸기

ALTER TABLE table_name RENAME PARTITION p3 TO p6;

다른 테이블 공간으로 파티션 이동

ALTER TABLE table_name 
MOVE PARTITION partition_name TABLESPACE tablespace_name;

새 파티션 추가

ALTER TABLE table_name 
ADD PARTITION new_partition VALUES LESS THAN(400);

분할 분할

일부 파티션을 다른 상한선이있는 두 개의 파티션으로 분할합니다.

ALTER TABLE table_name SPLIT PARTITION old_partition 
    AT (new_high_bound) INTO (PARTITION new_partition TABLESPACE new_tablespace,
    PARTITION old_partition)

분할 영역 병합

두 개의 파티션을 하나의 파티션으로 병합

ALTER TABLE table_name
  MERGE PARTITIONS first_partition, second_partition
  INTO  PARTITION  splitted_partition TABLESPACE new_tablespace

파티션 교환

파티션을 파티션되지 않은 테이블로 변환하거나 변환 할 수 있습니다. 이것은 작업이 DDL이기 때문에 데이터 세그먼트 ( "insert ... select"또는 "create table ... as select"와 같은 작업을 수행하는 것과 반대) 사이에서 데이터의 빠른 "이동"을 용이하게합니다 (파티션 교환 작업은 데이터 DML (큰 실행 취소 / 재실행 오버 헤드)이 아닌 실제 데이터를 이동하지 않고 사전을 업데이트합니다.

가장 기본적인 예 :

  1. 파티션되지 않은 테이블 (테이블 "B")을 ​​파티션 (테이블 "A")으로 변환 :

테이블 "A"는 파티션 "OLD_VALUES"에 데이터를 포함하지 않고 테이블 "B"는 데이터를 포함합니다

ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";

결과 : 데이터는 테이블 "B"(작업 후 데이터가 없음)에서 "OLD_VALUES"파티션으로 "이동"됩니다.

  1. 파티션을 파티션되지 않은 테이블로 변환 :

테이블 "A"는 파티션 "OLD_VALUES"의 데이터를 포함하고 테이블 "B"는 데이터를 포함하지 않습니다

ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";

결과 : 데이터가 파티션 "OLD_VALUES"(작업 후 데이터가 없음)에서 테이블 "B"로 "이동"됩니다.

참고 :이 작업에는 몇 가지 추가 옵션, 기능 및 제한 사항이 있습니다.

자세한 정보는이 링크에서 확인할 수 있습니다. ---> " https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 "( "파티션 교환"섹션)



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow