데이터베이스 파티셔닝 (Database Partitioning)
파티셔닝은 큰 테이블이나 인덱스를 더 작고 관리하기 쉬운 단위로 나누는 것.
정의와 목적
파티셔닝은 큰 테이블이나 인덱스를 더 작은 관리 가능한 단위인 ‘파티션’으로 나누는 것을 의미한다.
주요 목적은 다음과 같다:
- 성능 향상
- 가용성 증대
- 관리 용이성 개선
파티셔닝의 유형
수평 파티셔닝 (Horizotal Partitioning):
- 행 단위로 데이터를 분할
- 샤딩(Sharding)과 유사한 개념
수직 파티셔닝 (Vertical Partitioning):
- 열 단위로 데이터를 분할
- 자주 사용되는 컬럼을 별도로 저장
파티셔닝 방법
범위 분할 (Range Partitioning):
- 연속적인 숫자나 날짜를 기준으로 분할
1 2 3 4 5 6 7 8 9 10 11 12 13 14
-- 날짜 기준 범위 파티셔닝 CREATE TABLE sales ( sale_id INT, sale_date DATE, amount DECIMAL(10,2) ) PARTITION BY RANGE (YEAR(sale_date)) ( PARTITION p2022 VALUES LESS THAN (2023), PARTITION p2023 VALUES LESS THAN (2024), PARTITION p2024 VALUES LESS THAN MAXVALUE ); -- 특정 파티션의 데이터만 조회 SELECT * FROM sales PARTITION(p2023) WHERE sale_date BETWEEN '2023-01-01' AND '2023-12-31';
목록 분할 (List Partitioning):
- 특정 값 목록을 기준으로 분할
1 2 3 4 5 6 7 8 9 10
-- 지역별 리스트 파티셔닝 CREATE TABLE customers ( customer_id INT, name VARCHAR(100), region VARCHAR(50) ) PARTITION BY LIST (region) ( PARTITION p_east VALUES IN ('New York', 'Boston', 'Philadelphia'), PARTITION p_west VALUES IN ('Los Angeles', 'San Francisco', 'Seattle'), PARTITION p_central VALUES IN ('Chicago', 'Detroit', 'Houston') );
해시 분할 (Hash Partitioning):
- 해시 함수를 사용하여 균등하게 분할
장점
- 쿼리 성능 향상
- 데이터 가용성 증가
- 관리 용이성 개선
- 백업 및 복구 효율성 증대
단점
- 테이블 간 조인 비용 증가
- 설계 복잡성 증가
- 일부 제약 조건 적용의 어려움