bulk DML

대량 변경은 작은 범위, 짧은 커밋, 재시작 기준으로 나눈다

수백만 행을 한 번에 바꾸면 락, 로그, 복제 지연이 커진다. 키 범위를 나누고 지표를 보며 속도를 조절해야 한다.

01 대상 고정 변경할 PK 목록이나 시간 범위를 먼저 확정한다.
02 작은 실행 서비스 부하에 맞춰 천 건 또는 만 건 단위로 자른다.
03 짧은 커밋 각 단위마다 커밋해 장기 락과 로그 폭증을 줄인다.
04 지표 확인 대기와 복제 지연이 커지면 속도를 낮춘다.
05 재시작 실패 후 마지막 성공 키 다음부터 이어서 처리한다.
대량 변경 운영 점검표
점검 위험 확인 기준 운영 조치
인덱스 조건이 인덱스를 타지 않으면 전체 테이블을 반복 스캔한다. 실행 계획과 예상 변경 건수를 먼저 본다. 배치 WHERE 조건을 인덱스 가능한 범위로 만든다.
긴 트랜잭션이 읽기와 쓰기를 오래 막는다. 락 대기 시간과 타임아웃을 관찰한다. 청크 크기를 줄이고 커밋 간격을 짧게 둔다.
로그 쓰기 로그가 급증해 저장 공간과 복구 시간이 커진다. WAL/binlog 증가량과 디스크 여유를 본다. 처리 속도를 조절하고 피크 시간을 피한다.
복제 읽기 복제본 지연으로 사용자 조회가 낡아진다. replica lag와 오류율을 함께 본다. 지연이 커지면 일시 정지하거나 청크를 줄인다.
한 줄 결론

대량 UPDATE와 DELETE는 SQL 한 줄의 문제가 아니라 락, 로그, 복제, 재시작 기준을 함께 설계하는 운영 작업이다.