파티셔닝 유형
파티셔닝의 이점
- 성능 향상: 대용량 테이블을 여러 파티션으로 나누면 특정 파티션에만 접근하여 데이터를 조회하거나 수정할 수 있으므로 쿼리 성능이 향상됩니다.
- 관리 편의성: 파티션별로 데이터 유지 관리 정책을 다르게 적용할 수 있습니다. 예를 들어, 오래된 데이터는 별도의 파티션에 저장하여 주기적으로 삭제하거나 백업할 수 있습니다.
- 가용성 향상: 파티션을 사용하면 특정 파티션에 장애가 발생하더라도 다른 파티션에 있는 데이터는 영향을 받지 않으므로, 가용성을 높일 수 있습니다.
파티션 유형.
Range Partitioning (범위 파티셔닝):
값의 범위를 기준으로 데이터를 분할합니다. 날짜, 번호 등의 연속된 값에 주로 사용됩니다.
CREATE TABLE sales (
sale_id NUMBER,
sale_date DATE,
amount NUMBER
)
PARTITION BY RANGE (sale_date) (
PARTITION p1 VALUES LESS THAN (TO_DATE('2023-01-01', 'YYYY-MM-DD')),
PARTITION p2 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')),
PARTITION p3 VALUES LESS THAN (MAXVALUE)
);
List Partitioning (리스트 파티셔닝):
지정된 값 목록에 따라 데이터를 분할합니다. 범주형 데이터에 주로 사용됩니다.
CREATE TABLE customers (
customer_id NUMBER,
region VARCHAR2(50)
)
PARTITION BY LIST (region) (
PARTITION east VALUES ('East'),
PARTITION west VALUES ('West'),
PARTITION central VALUES ('Central')
);
Hash Partitioning (해시 파티셔닝):
해시 함수를 사용하여 데이터를 균등하게 분할합니다. 특정 기준이 없을 때 데이터 분포를 고르게 하기 위해 사용됩니다.
CREATE TABLE orders (
order_id NUMBER,
customer_id NUMBER,
order_date DATE
)
PARTITION BY HASH (customer_id)
PARTITIONS 4;
Composite Partitioning (복합 파티셔닝):
두 가지 이상의 파티셔닝 방법을 결합하여 사용하는 방식입니다. 예를 들어, Range-List 파티셔닝처럼 범위로 먼저 분할한 후 리스트로 다시 분할할 수 있습니다.
CREATE TABLE products (
product_id NUMBER,
category VARCHAR2(50),
launch_date DATE
)
PARTITION BY RANGE (launch_date)
SUBPARTITION BY LIST (category) (
PARTITION p1 VALUES LESS THAN (TO_DATE('2023-01-01', 'YYYY-MM-DD')) (
SUBPARTITION electronics VALUES ('Electronics'),
SUBPARTITION furniture VALUES ('Furniture')
),
PARTITION p2 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')) (
SUBPARTITION electronics VALUES ('Electronics'),
SUBPARTITION furniture VALUES ('Furniture')
)
);
Range Partitioning (범위 파티셔닝): 값의 범위를 기준으로 데이터를 분할합니다. 날짜, 번호 등의 연속된 값에 주로 사용됩니다.
CREATE TABLE sales (
sale_id NUMBER,
sale_date DATE,
amount NUMBER
)
PARTITION BY RANGE (sale_date) (
PARTITION p1 VALUES LESS THAN (TO_DATE('2023-01-01', 'YYYY-MM-DD')),
PARTITION p2 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')),
PARTITION p3 VALUES LESS THAN (MAXVALUE)
);
List Partitioning (리스트 파티셔닝): 지정된 값 목록에 따라 데이터를 분할합니다. 범주형 데이터에 주로 사용됩니다.
CREATE TABLE customers (
customer_id NUMBER,
region VARCHAR2(50)
)
PARTITION BY LIST (region) (
PARTITION east VALUES ('East'),
PARTITION west VALUES ('West'),
PARTITION central VALUES ('Central')
);
Hash Partitioning (해시 파티셔닝): 해시 함수를 사용하여 데이터를 균등하게 분할합니다. 특정 기준이 없을 때 데이터 분포를 고르게 하기 위해 사용됩니다.
CREATE TABLE orders (
order_id NUMBER,
customer_id NUMBER,
order_date DATE
)
PARTITION BY HASH (customer_id)
PARTITIONS 4;
Composite Partitioning (복합 파티셔닝): 두 가지 이상의 파티셔닝 방법을 결합하여 사용하는 방식입니다. 예를 들어, Range-List 파티셔닝처럼 범위로 먼저 분할한 후 리스트로 다시 분할할 수 있습니다.
CREATE TABLE products (
product_id NUMBER,
category VARCHAR2(50),
launch_date DATE
)
PARTITION BY RANGE (launch_date)
SUBPARTITION BY LIST (category) (
PARTITION p1 VALUES LESS THAN (TO_DATE('2023-01-01', 'YYYY-MM-DD')) (
SUBPARTITION electronics VALUES ('Electronics'),
SUBPARTITION furniture VALUES ('Furniture')
),
PARTITION p2 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')) (
SUBPARTITION electronics VALUES ('Electronics'),
SUBPARTITION furniture VALUES ('Furniture')
)
);