반응형
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
반응형
'Coding > DB' 카테고리의 다른 글
[DBeaver] 데이터 마이그레이션 | 다중 데이터베이스간 데이터 옮기기 (0) | 2025.03.19 |
---|---|
[MariaDB] 주석 작성 :: 공백 추가하기 (1) | 2024.12.13 |
[postgreSql] 테이블 컬럼 정보 조회하기 :: table_name, column_name (0) | 2024.11.05 |