MySQL의 ALTER TABLE ... PARTITION은 테이블 파티션을 관리하는 데 사용되는 강력한 명령입니다. 파티션은 데이터를 물리적으로 분할하여 성능을 향상시키고 관리 용이성을 제공하는 MySQL의 핵심 기능 중 하나입니다.
ALTER TABLE ... PARTITION이란?
ALTER TABLE ... PARTITION 명령은 기존 테이블의 파티션을 수정, 추가, 삭제 또는 재구성하는 데 사용됩니다. MySQL에서 테이블에 파티션을 적용하면 대량의 데이터를 효율적으로 처리할 수 있어 쿼리 성능을 극대화할 수 있습니다.
테이블 파티션이란?
파티션은 데이터를 여러 개의 작은 테이블로 나누는 방식으로, 물리적으로는 각각의 파티션이 독립된 데이터 파일에 저장됩니다. 파티션은 범위(RANGE), 리스트(LIST), 해시(HASH), 키(KEY) 등의 방식으로 데이터를 분할합니다.
ALTER TABLE ... PARTITION 기본 문법
ALTER TABLE 테이블명
[ADD PARTITION (PARTITION 파티션명 VALUES ...)]
[DROP PARTITION (PARTITION 파티션명)]
[REORGANIZE PARTITION 파티션명 INTO (...)]
[COALESCE PARTITION 숫자];
ALTER TABLE ... PARTITION 주요 기능
- ADD PARTITION: 새로운 파티션 추가
- DROP PARTITION: 기존 파티션 삭제
- REORGANIZE PARTITION: 파티션 병합 또는 재구성
- COALESCE PARTITION: 특정 파티션 개수를 줄이기
ALTER TABLE ... PARTITION 예제
1. 파티션 추가
ALTER TABLE sales_data
ADD PARTITION (
PARTITION p4 VALUES LESS THAN (2025)
);
위 명령은 sales_data 테이블에 2025 이전의 데이터를 저장하는 새로운 파티션 p4를 추가합니다.
2. 파티션 삭제
ALTER TABLE sales_data
DROP PARTITION p3;
이 명령은 p3이라는 파티션을 삭제하여 해당 데이터는 테이블에서 제거됩니다.
3. 파티션 병합 및 재구성
ALTER TABLE sales_data
REORGANIZE PARTITION p3 INTO (
PARTITION p3a VALUES LESS THAN (2023),
PARTITION p3b VALUES LESS THAN (2024)
);
p3 파티션을 두 개의 새로운 파티션 p3a와 p3b로 나눕니다.
4. 파티션 축소
ALTER TABLE sales_data
COALESCE PARTITION 2;
위 명령은 파티션 개수를 두 개 줄입니다.
ALTER TABLE ... PARTITION의 활용 사례
- 대량 데이터 관리
파티션을 사용하면 대량의 데이터를 여러 파일에 나누어 저장하여 쿼리 속도를 대폭 향상시킬 수 있습니다. - 효율적인 데이터 삭제
특정 파티션만 삭제하면 데이터를 빠르게 정리할 수 있습니다. - 데이터 이관 및 아카이빙
오래된 데이터를 별도의 파티션에 저장하거나 삭제하여 데이터베이스 크기를 효율적으로 관리할 수 있습니다.
파티션 사용 시 주의사항
1. 인덱스 및 제약 조건
파티션 테이블에서 PRIMARY KEY 또는 UNIQUE KEY를 정의할 때, 모든 파티션 키가 포함되어야 합니다.
ALTER TABLE sales_data
ADD PRIMARY KEY (id, sale_date);
2. 데이터 이동 및 병합 비용
REORGANIZE PARTITION을 사용할 때 데이터 이동 비용이 발생할 수 있으므로 주의해야 합니다.
추가 예제: 복잡한 파티션 관리
1. RANGE 파티션 사용
CREATE TABLE orders (
order_id INT NOT NULL,
order_date DATE NOT NULL
)
PARTITION BY RANGE (YEAR(order_date)) (
PARTITION p0 VALUES LESS THAN (2021),
PARTITION p1 VALUES LESS THAN (2022),
PARTITION p2 VALUES LESS THAN (2023)
);
2. LIST 파티션 추가
ALTER TABLE customer_data
ADD PARTITION (
PARTITION p_europe VALUES IN ('UK', 'France', 'Germany')
);
결론
MySQL의 ALTER TABLE ... PARTITION은 대규모 데이터를 효율적으로 관리하기 위한 필수 도구입니다.
공식 가이드 문서: https://dev.mysql.com/doc/
'DB' 카테고리의 다른 글
[MySQL] GRANT ROLE 완벽 가이드 사용법(역할[Role] 부여) (0) | 2025.01.20 |
---|---|
[MySQL] DROP ROLE 완벽 가이드 사용법(역할[Role] 삭제) (0) | 2025.01.18 |
[MySQL] CREATE ROLE 완벽 가이드 사용법(역할[Role] 생성) (0) | 2025.01.15 |
[MySQL] RESET MASTER / SLAVE 완벽 가이드 사용법(서버 초기화) (0) | 2025.01.15 |
[MySQL] CREATE TABLE AS 완벽 가이드 사용법(데이터를 조회하여 테이블 생성) (1) | 2025.01.15 |
[MySQL] CREATE SPATIAL INDEX 완벽 가이드 사용법(공간인덱스) (0) | 2025.01.15 |
[MySQL] SET CHARACTER SET 완벽 가이드 사용법(캐릭터셋 설정) (0) | 2025.01.15 |
[MySQL] DROP TRIGGER 완벽 가이드 사용법(트리거 삭제) (0) | 2025.01.15 |