개발은 하는건가..

Mysql/MariaDb 대용량 파티션 테이블 빠르게 삭제하기 본문

Server, Maria DBMS

Mysql/MariaDb 대용량 파티션 테이블 빠르게 삭제하기

수동애비 2024. 8. 2. 14:27
반응형

출처 : https://dungbeetle.co.kr/mysql-%EB%8C%80%EC%9A%A9%EB%9F%89-partition-lock-%EC%97%86%EC%9D%B4-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0/

 

mysql 대용량 partition lock 없이 삭제하기 - 쇠똥구리 DBA's Work and Life Balance

간혹 대용량 파티션 데이터의 삭제는 테이블의 성격에 따라선 까다로운 작업이 되기도 한다

dungbeetle.co.kr


1.  파티션 테이블 스키마를 복사한다.

> CREATE TABLE '복제한 임시테이블명' LIKE '원본 테이블명';

2. 복제된 임시 테이블의 파티션을 삭제한다.

> ALTER TABLE '임시테이블명' REMOVE PARTITIONING;

3. 원복테이블에 있는 삭제할 파티션 테이블을 임시테이블로 이동

> ALTER TABLE '원본테이블명' EXCHANGE PARTITION '이동할 파티션명' WITH TABLE '임시테이블명';

# 이동 후 해당 파티션이 이동되었는지 확인 (table rows 가 0인지)
> SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS 
  FROM information_schema.PARTITIONS
  WHERE TABLE_NAME = '원본테이블명';

4. 파티션 테이블 제거

# 원본 테이블에 있는 해당 파티션 삭제
> ALTER TABLE '원본테이블명' DROP PARTITION '삭제할 파티션명';

# 임시 테이블 삭제
> DROP TABLE '임시테이블명';
Comments