파티션이란 데이터가 너무 많은 경우 상당한 부하가 걸릴 수 있기 때문에 데이터를 분산하여 저장하는 방법으로 MySQL 서버 입장에서는 데이터를 별도의 테이블로 분리해서 저장하지만 사용자 입장에서는 하나의 테이블로 읽기와 쓰기를 할 수 있게 해주는 기능을 의미 합니다.
# 파티션 테이블 생성
CREATE TABLE `TABLE_NAME` (
...
) ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 COMMENT=''
PARTITION BY RANGE (TO_DAYS(yyyymmdd))
(PARTITION P_2020_10 VALUES LESS THAN (TO_DAYS('2020-11-01')) ENGINE = INNODB ,
PARTITION P_2020_11 VALUES LESS THAN (TO_DAYS('2020-12-01')) ENGINE = INNODB ,
PARTITION P_2020_12 VALUES LESS THAN (TO_DAYS('2021-01-01')) ENGINE = INNODB ,
PARTITION P_max VALUES LESS THAN MAXVALUE ENGINE = INNODB);
# 파티션 재구성
ALTER TABLE TABLE_NAME REORGANIZE PARTITION `yyyymmdd` INTO (
PARTITION P_2022_01 VALUES LESS THAN (TO_DAYS('2022-02-01')),
PARTITION P_2022_02 VALUES LESS THAN (TO_DAYS('2022-03-01')),
PARTITION P_2022_03 VALUES LESS THAN (TO_DAYS('2022-04-01')),
PARTITION P_2022_04 VALUES LESS THAN (TO_DAYS('2022-05-01')),
PARTITION P_2022_05 VALUES LESS THAN (TO_DAYS('2022-06-01')),
PARTITION p_future VALUES LESS THAN MAXVALUE
);
https://docs.oracle.com/cd/B12037_01/server.101/b10743/partconc.htm