쩨이엠 개발 블로그

[MySQL] 파티션 추가 / 재구성 본문

개발/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
반응형
Comments