DB
[DB] MySQL - 파티션 구조 변경 및 CRUD
planting grass
2025. 4. 8. 16:31
728x90
파티션 구조
MySQL에서는 파티션이 크게 2가지로 나뉜다.
수평, 수직으로 나뉘는데 이 중 수직 파티션의 경우에는 파티션 기능보다는 테이블 자체를 쪼개는 설계 방식에 가깝다.
즉, MySQL에서 제공하는 PARTITION
기능은 수평 파티션에 해당하는 기능이라는 소리다.
수직 파티션은 DB 설계 전략이지 MySQL에서 수평 파티션처럼 ALTER TABLE ... DROP PARTITION
과 같은 방법으로 직접적으로 다룰 수 없다.
때문에 이 글에서 다룰 파티션은 수평 파티션에 관한 내용이라고 생각하면 된다.
파티션 구조 변경 방법
MySQL에서는 여러 명령어를 통해 파티션 구조를 변경할 수 있다.
아래 명령어를 표로 정리해뒀다.
명령어 | 설명 |
ADD PARTITION |
파티션 추가 |
DROP PARTITION |
기존 파티션 제거 |
REORGANIZE PARTITION |
파티션을 쪼개거나 병합 |
REMOVE PARTITIONING |
파티션 기능 제거 (일반 테이블로 전환) |
사용 예시
예시를 들기위한 예시 테이블 데이터다.
CREATE TABLE emp_partition (
emp_id INT,
name VARCHAR(50),
hire_year INT
)
PARTITION BY RANGE (hire_year) (
PARTITION p1 VALUES LESS THAN (2000),
PARTITION p2 VALUES LESS THAN (2010),
PARTITION p3 VALUES LESS THAN (2020),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
1. 파티션 추가
ALTER TABLE emp_partition
ADD PARTITION (
PARTITION p_future VALUES LESS THAN (2030)
);
2\. 파티션 제거
```sql
ALTER TABLE emp_partition
DROP PARTITION p1;
3. 파티션 병합 or 쪼개기 (REORGANIZE
)
ALTER TABLE emp_partition
REORGANIZE PARTITION p2, p3 INTO (
PARTITION p_2000s VALUES LESS THAN (2020)
);
4. 파티션 제거 (전체 기능 제거)
ALTER TABLE emp_partition
REMOVE PARTITIONING;
CRUD
파티션은 투명하게 작동하기 때문에, CRUD 작업은 일반 테이블과 동일하게 사용할 수 있다.
하지만 파티션 컬럼을 기준으로 자동으로 분산 저장되고, 우리에게 보이는것은 하나의 테이블로 보이게 된다.
사용 예시
1. INSERT
(삽입)
INSERT INTO emp_partition VALUES (1, 'Alice', 1995);
INSERT INTO emp_partition VALUES (2, 'Bob', 2005);
INSERT INTO emp_partition VALUES (3, 'Charlie', 2015);
2. SELECT
(조회)
SELECT * FROM emp_partition WHERE hire_year < 2010;
옵티마이저가 p1, p2 파티션만 검색함 (파티션 프루닝 발생)
3. UPDATE
(수정)
UPDATE emp_partition
SET name = 'Bobby'
WHERE emp_id = 2;
파티션 컬럼을 기준으로 재배치되진 않지만, WHERE
조건에 따라 알맞은 파티션만 탐색함
4. DELETE
(삭제)
DELETE FROM emp_partition
WHERE hire_year < 2000;
→ p1 파티션만 삭제 대상이 되어 성능 향상
728x90