mysql 파티셔닝 질문 있습니다. 0 1 473

by 대마왕개발자 [MySQL] 파티셔닝 mysql [2022.03.07 14:15:00]


안녕하십니까? 1000mb 테이블 하나를 읽어오는데 시간이 너무 오래걸려 파티셔닝을 도전해보려고 합니다.

 

1. 파티션 테이블을 만들면서 질문할 게 있습니다.

웹상에서 예제들을 보면 date(날짜) 값을 pk 로 설정하여 파티션을 구분하던데 제가 원하는 부분이지만 날짜값을 pk로 설정해도 되는건지? 의구심이 듭니다.

인덱스 설정해도 에러메세지는 pk 설정하라고 계속 해서 이해도 못한채 date(날짜) 값을 pk 로 설정하여 파티셔닝 했는데.. 이럴 수 있는 이유가 뭘까요?

 

 

2. 기존 테이블을 파티션을 나눠주면 자동으로 안의 데이터들이 나눠지나요?

아니면 새로운 파티션 테이블을 준비하고 기존 태이블 데이터를 옮겨주는 작업을 해야하나요?

그렇다면 기존 데이터를 어떤식으로 이식을 시키는지 궁금합니다

덤프를 해버리니 테이블 성질까지 옮겨지는 거 같아서 말짱 도루묵이 되더라구요.

 

잘 부탁드립니다.

by 아메바 [2022.03.14 21:45:15]

파티션 구성시 파티션을 나누는 기준이 되는 컬럼은 pk에 포함 되어 있어야 합니다. 기존에 pk를 사용하고 있던 컬럼이 있었다면 그 컬럼과 같이 복합 키로 구성하시면 됩니다.

파티션 생성시 자동으로 나눠지는지는 잘 모르겠습니다만 보통 실 서비스가 되고 있는 테이블에 작업을 한다고 가정하면 저 같은 경우에는 파티션 테이블을 임시로 만든후 데이터를 insert select 후 rename 하는 방식으로 처리하고 있습니다.

퍼코나 툴을 이용해서 사용할 수도 있을것 같은데 현재는 거기까지 필요가 없어서 진행해보지는 않았습니다.

date를 기준으로 생성을 하게 되면 매달 reorganize 하여 date 파티션을 추가해주시면 됩니다.

 

사족으로 1G 정도 되는 테이블에서 쿼리 수행속도가 느리다면 파티션 테이블로도 해결이 안될 수 있습니다. 

데이터 구조변경이나 쿼리 튜닝도 고려해보시길 바랍니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입