개발/ETC
[MySQL] 파티션 추가 / 재구성
쩨이엠
2022. 1. 17. 20:14
728x90
반응형
자동 파티셔닝을 안해놔서 파티션 추가해야할 일이 생겼다
일단 조회를 해본다
파티션 조회
select * from information_schema.partitions where table_name=TABLE_NAME;
그러면 파티션을 조회하였으니
파티션을 추가해보기로 한다
파티션 추가
ALTER TABLE `테이블` PARTITION BY RANGE(함수(`필드명`)) (
PARTITION `파티션명` VALUES LESS THAN (값),
PARTITION `파티션명` VALUES LESS THAN (값)
)
여기에서 에러가 난다면 처음 파티션을 생성할 때 만든 p_future ( 혹은 p_max 등등) 때문인데
이 것이 MAXVALUE보다 아래인것으로 나머지를 포괄하고 있기 때문이다
#파티션 생성과정
PARTITION BY RANGE (TO_DAYS(`create_at`)) (
PARTITION P202008 VALUES LESS THAN (TO_DAYS('2020-09-01')),
...
PARTITION p_future VALUES LESS THAN MAXVALUE
);
이런 경우 파티션을 그냥 추가할 수는 없고 p_future를 쪼개서 다시 재구성을 해주어야 한다
파티션 재구성
ALTER TABLE TABLE_NAME REORGANIZE PARTITION p_future INTO (
PARTITION P202201 VALUES LESS THAN (TO_DAYS('2022-02-01')),
PARTITION P202202 VALUES LESS THAN (TO_DAYS('2022-03-01')),
PARTITION P202203 VALUES LESS THAN (TO_DAYS('2022-04-01')),
PARTITION P202204 VALUES LESS THAN (TO_DAYS('2022-05-01')),
PARTITION P202205 VALUES LESS THAN (TO_DAYS('2022-06-01')),
PARTITION p_future VALUES LESS THAN MAXVALUE
);
이런식으로 마지막 MAXVALUE를 가진 p_future를 재구성해주면 완료 !
73만 row는 6초, 4천만 row는 62초 걸렸으니 파티션 재구성할때에도 시간은 많이 걸리지 않는다
만약 이 때 이런 에러 코드가 나온다면
Error Code: 2013. Lost connection to MySQL server during query
Edit > Preference > SQL Editor에 가서 DBMS connection read timeout interval ( in seconds) 부분을 바꿔주면 된다
너무 긴것도 불안해서 나는 120초로 맞춰둠
상관없다면 999로 해도 될 듯 하다
728x90
반응형