테이블 파티셔닝이란?
- 하나의 큰 테이블을 논리적으로 여러 개의 파티션으로 나누어 저장하는 방식
- 대량 데이터 처리에 효과적
✅ 장점
- 쿼리 성능 향상 → 파티션 프루닝(Partition Pruning)으로 특정 파티션만 조회
- 데이터 삭제 속도 개선 → DELETE 대신 DROP PARTITION으로 빠르게 삭제
- INSERT 성능 향상 → 특정 파티션에만 추가
- 테이블 크기 관리 최적화 → 데이터 분산 저장
- 아카이빙 용이 → 특정 파티션을 파일로 저장 후 삭제 가능
ℹ️ 파티션 프루닝: 조건에 따라 필요한 파티션만 조회하는 기법
✅ 단점
- 특정 쿼리에서 성능 저하
- 파티션 키(파티션을 나누는 컬럼)이 조회 조건에 포함되어 있지 않으면 오히려 일반 테이블보다 느려질 수 있음
- 인덱스 관리가 어려움
- 파티션 키 외에 다른 컬럼을 인덱스로 추가했을 때, 각 파티션 별로 개별적인 인덱스가 생성됨.
→ 파티션 키를 포함하여 복합 인덱스를 활용하면 조회 성능이 향상될 수 있음.
- 파티션 이동이 발생하는 UPDATE의 경우, DELETE → INSERT가 내부적으로 실행되어 성능 저하 발생.
→ 되도록 파티션 키는 변경되지 않는 값으로 설계해야 함.
- 테이블 설계 변경이 어려움
- AUTO_INCREMENT는 반드시 PK 값의 일부여야 함.
- FK 사용 불가
- 파티션 키 변경 불가
→ 테이블 설계를 처음부터 신중하게 해야 함.
- 파티션 추가, 삭제 자동화 작업 별도 필요
- 데이터가 많지 않을 경우 일반 테이블보다 느릴 수 있음
→ 데이터가 많지 않다면, 인덱스를 통해 최적화 하는 것이 더 효율적일 수 있음.
예제
CREATE TABLE api_logs (
id INT AUTO_INCREMENT,
api_url VARCHAR(255),
status_code INT,
log_message TEXT,
created_at DATETIME NOT NULL,
PRIMARY KEY (id, created_at)
) PARTITION BY RANGE(YEAR(created_at)) (
PARTITION p202501 VALUES LESS THAN (202501),
PARTITION p202502 VALUES LESS THAN (202502),
PARTITION p202503 VALUES LESS THAN (202503)
'DB' 카테고리의 다른 글
Database Table Lock (0) | 2025.04.14 |
---|