Coding/DB

대용량 데이터 삭제 • 옮기기 | 테이블 복제, 키변경, ALTER, RENAME

왓츠뉴 whatsnew 2025. 4. 8. 08:58
반응형

 

 

1천만 건의 데이터가 등록되어있는 테이블에

PK설정이 잘못되어있는걸 발견하였습니다.

 

PK 중복에 따라 데이터가 입력되는 프로시저가 있어

PK를 필수로 맞춰줘야 했는데요. 기존에 있는 데이터가 너무 많다보니

DELETE도 , ALTER도 timeout이 걸려서 결국 테이블을 복제하여 비우는 방법으로 진행하였습니다.

 

 

-- 1. 기존 테이블 복제 (구조만)
CREATE TABLE IOT_DEVICE_STATUS_NEW LIKE IOT_DEVICE_STATUS;
-- 2. (선택) 기존 PK 제거, 새 PK 추가 : 이 부분은 PK 변경을 위한 ALTER 문입니다.
ALTER TABLE IOT_DEVICE_STATUS_NEW
DROP PRIMARY KEY,
ADD PRIMARY KEY (`ID`, `STAT_DATE`,`DEVICE_ID`, `RESOURCE_URI`); 
-- 3. (선택) 데이터 이관 : 이 부분은 데이터 이관이 필요한 경우에만 실행해주시면 됩니다. 빈 테이블을 원할시 생략
INSERT INTO IOT_DEVICE_STATUS_NEW
SELECT * FROM IOT_DEVICE_STATUS;
-- 4. 테이블 이름 바꾸기 (빠르게 스왑)
RENAME TABLE IOT_DEVICE_STATUS TO IOT_DEVICE_STATUS_OLD,
             IOT_DEVICE_STATUS_NEW TO IOT_DEVICE_STATUS;
-- 5. (선택) 백업 테이블 삭제
-- DROP TABLE IOT_DEVICE_STATUS_NEW;
-- 6. 복제 DB 확인
-- SELECT * FROM IOT_DEVICE_STATUS;

 

 

 

728x90
반응형