[sql] 테이블 파티셔닝
테이블 파티셔닝은 대량의 데이터를 효율적으로 저장하고 관리하기 위한 방법으로, 데이터를 파티션에 분산하여 쿼리 성능을 향상시키는 기술입니다.
파티셔닝 종류
테이블 파티셔닝에는 여러 가지 종류가 있습니다. 대표적으로 range, hash, list, composite 등의 방식이 있으며, 각각의 방식은 데이터의 특성에 따라 선택할 수 있습니다.
Range 파티셔닝
Range 파티셔닝은 지정한 기준에 따라 데이터를 분류하는 방식으로, 일정한 범위로 파티션을 나누어 저장합니다. 일반적으로 날짜와 같은 연속적인 값에 적합한 방식입니다.
CREATE TABLE sales (
id INT,
sale_date DATE,
amount DECIMAL(10, 2)
)
PARTITION BY RANGE (YEAR(sale_date)) (
PARTITION p0 VALUES LESS THAN (2000),
PARTITION p1 VALUES LESS THAN (2010),
PARTITION p2 VALUES LESS THAN (2020)
);
Hash 파티셔닝
Hash 파티셔닝은 특정 칼럼의 값에 기반하여 데이터를 분산하여 저장합니다. 동일한 값은 항상 동일한 파티션에 위치하므로 데이터의 고르게 분산이 필요한 경우 유용합니다.
CREATE TABLE user_data (
id INT,
name VARCHAR(50),
email VARCHAR(100)
)
PARTITION BY HASH(id)
PARTITIONS 4;
파티셔닝의 장점
- 성능 향상: 파티션 단위로 데이터를 분할하고 병렬처리를 통해 쿼리 성능을 향상시킬 수 있습니다.
- 관리 용이성: 파티션 단위로 데이터를 관리할 수 있어서 백업, 복구, 데이터 이관 등의 작업이 용이합니다.
- 저장 공간 최적화: 파티션 단위로 데이터를 관리하므로 필요한 데이터만 접근하여 효율적으로 저장할 수 있습니다.
파티셔닝의 고려 사항
- 적절한 키 선택: 파티션 키를 선택할 때는 데이터의 특성과 조회 패턴을 고려하여 적합한 키를 선택해야 합니다.
- 파티션 개수 설정: 파티션 개수를 적절하게 설정하여 데이터의 균형있는 분산을 유지해야 합니다.
데이터 양과 쿼리 패턴에 따라 적절한 파티셔닝 방법을 선택하여 데이터베이스의 성능을 최적화할 수 있습니다.
참고문헌:
- https://dev.mysql.com/doc/refman/8.0/en/partitioning.html