반응형
🌱Partitioning이란?
PostgreSQL에서 파티셔닝(partitioning)은 대용량 테이블을 효율적으로 관리하고 성능을 향상시키기 위한 기능입니다. 기본적으로 하나의 큰 테이블을 여러 개의 작은 테이블(파티션)으로 나누는 방식입니다.
PostgreSQL에서는 PostgreSQL 10부터 native partitioning을 지원합니다. 주요 파티셔닝 방법은 다음과 같습니다:
1. 파티셔닝 방법 종류
- Range Partitioning (범위 기반)
- 예: 날짜, ID 범위 등으로 나눔
- List Partitioning (리스트 기반)
- 예: 지역 코드, 카테고리 등 특정 값 기반으로 나눔
- Hash Partitioning (해시 기반)
- 균등 분산이 필요할 때 사용
- Composite Partitioning (복합: Range + List 등)
2. 기본 사용법 예제
1. Range Partitioning 예제 (날짜 기준)
CREATE TABLE orders (
id serial,
order_date date,
amount numeric
) PARTITION BY RANGE (order_date);
파티션 테이블 생성
CREATE TABLE orders_2023 PARTITION OF orders
FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');
CREATE TABLE orders_2024 PARTITION OF orders
FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');
2. List Partitioning 예제 (지역 코드 기준)
CREATE TABLE users (
id serial,
region text
) PARTITION BY LIST (region);
파티션 테이블 생성
CREATE TABLE users_korea PARTITION OF users
FOR VALUES IN ('KR');
CREATE TABLE users_japan PARTITION OF users
FOR VALUES IN ('JP');
3. Hash Partitioning 예제
CREATE TABLE logs (
id serial,
message text
) PARTITION BY HASH (id);
파티션 테이블 생성
CREATE TABLE logs_p0 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 0);
CREATE TABLE logs_p1 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 1);
CREATE TABLE logs_p2 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 2);
CREATE TABLE logs_p3 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 3);
3. 기타 참고 사항
- 파티셔닝 키는 반드시 테이블 생성 시 지정해야 합니다.
- 각 파티션은 실제 테이블처럼 작동하지만, 부모 테이블로 쿼리하면 자동으로 적절한 파티션을 검색합니다.
- 인덱스나 제약조건은 각 파티션에 별도로 걸어줘야 합니다.
- 파티션은 자동 생성되지 않기 때문에, 새로운 값이 생길 경우 파티션을 수동으로 추가해야 합니다.
반응형
'DB > PostgreSQL' 카테고리의 다른 글
[ PostgreSQL ] column이 날짜 type 일 경우 날짜만 비교하기 (0) | 2025.03.27 |
---|---|
[ PostgreSQL ] 테이블 데이터 CSV파일로 저장하기 (0) | 2025.03.26 |
[ PostgreSQL ] SCHEMA - 권한 확인하고 설정 및 삭제하기 (0) | 2025.03.12 |
[ PostgreSQL ] CREATE - 스키마 생성하기 (0) | 2025.03.12 |
[ PostgreSQL ] Schema를 사용하는 이유 (0) | 2025.03.12 |