MySQL은 대용량 데이터를 효율적으로 처리하기 위한 기능으로 파티셔닝(Partitioning)을 제공합니다. 파티션을 활용하면 테이블을 논리적으로 분할하여 쿼리 속도 향상, 백업 관리, 유지보수의 편의성을 크게 높일 수 있습니다.
파티션이란?
파티션은 하나의 테이블을 여러 개의 물리적인 단위로 나누는 기능입니다. 사용자는 여전히 하나의 테이블로 인식하지만, MySQL 내부적으로는 데이터가 분할 저장되어 검색 성능을 높일 수 있습니다.
파티션 사용 시 기대 효과
- 쿼리 성능 향상: WHERE 조건에 따라 불필요한 파티션은 건너뜀
- 빠른 백업/복구: 파티션 단위로 관리 가능
- 데이터 정리 편리: 오래된 데이터 파티션만 DROP 가능
파티션의 종류
- RANGE: 범위에 따라 파티션 분할
- LIST: 지정된 값 목록에 따라 분할
- HASH: 해시함수를 기반으로 분산
- KEY: 내부 해시 알고리즘 기반 분산
RANGE 파티션 예시
CREATE TABLE sales (
id INT,
sale_date DATE
)
PARTITION BY RANGE (YEAR(sale_date)) (
PARTITION p2019 VALUES LESS THAN (2020),
PARTITION p2020 VALUES LESS THAN (2021),
PARTITION p2021 VALUES LESS THAN (2022)
);
LIST 파티션 예시
CREATE TABLE users (
id INT,
region VARCHAR(10)
)
PARTITION BY LIST COLUMNS (region) (
PARTITION seoul VALUES IN ('Seoul'),
PARTITION busan VALUES IN ('Busan'),
PARTITION other VALUES IN ('Others')
);
HASH 파티션 예시
CREATE TABLE logs (
id INT,
log_time DATETIME
)
PARTITION BY HASH(YEAR(log_time))
PARTITIONS 4;
파티션 사용 시 주의사항
- 파티션 키를 포함하지 않은 WHERE 조건은 성능 이점이 없음
- PRIMARY KEY 또는 UNIQUE KEY는 파티션 키를 포함해야 함
- JOIN이나 GROUP BY 시 파티션이 오히려 성능에 불리할 수 있음
- 파티션 테이블은
TRUNCATE
나ALTER
시 제약이 있을 수 있음
파티션 유지 관리 팁
- 주기적으로 오래된 파티션 DROP하여 공간 확보
ALTER TABLE ... REORGANIZE PARTITION
을 활용해 파티션 재조정- 백업 시 개별 파티션 백업 전략 고려
MySQL 파티셔닝 기능은 대규모 테이블을 효과적으로 관리할 수 있는 강력한 수단입니다. 올바른 파티션 설계는 검색 성능 개선, 유지보수 단순화, 스토리지 효율화에 크게 기여할 수 있습니다. 다만, 구조 설계 전 파티션 키와 사용 패턴을 신중하게 검토해야 합니다.
'개발 > DB' 카테고리의 다른 글
MySQL에서 외래 키 제약 조건 설정 시 성능 최적화 (0) | 2025.09.06 |
---|---|
MySQL에서 고급 쿼리 최적화 기법 (0) | 2025.09.05 |
MySQL에서 데이터 복제의 지연 시간 최소화 방법 (0) | 2025.09.03 |
MySQL의 클러스터링(Clustering) 개념과 설정 방법 (0) | 2025.09.02 |
MySQL에서 외부 서버와의 연동 방법 (1) | 2025.09.01 |