배치 제어

대량 변경 기준

무조건 1000건씩 커밋하는 공식은 없다. 업무적으로 되돌릴 수 있는 경계, Undo/Redo 로그 증가량, 복제 지연, 락 보유 시간을 함께 보며 배치 크기를 정한다.

원자성
로그
분할
1업무 단위

주문, 정산, 회원 상태처럼 실패했을 때 함께 되돌릴 논리 범위를 먼저 정한다.

2비용

큰 트랜잭션은 Undo 공간, Redo flush, row lock, replica apply 시간을 한꺼번에 키운다.

3분할

PK 범위나 생성 시각으로 자르고 각 조각의 처리 시간과 영향 행 수를 기록한다.

4재시도

마지막 성공 key, 실패 SQL, 예상 보상 작업을 남겨 같은 행을 중복 변경하지 않게 한다.

크게 묶을 때

업무 원자성은 좋지만 장시간 락과 복제 지연이 커져 온라인 서비스에는 위험하다.

작게 나눌 때

장애 반경은 줄지만 중간 상태가 노출될 수 있으므로 상태 컬럼과 idempotent 재실행이 필요하다.

운영 확인

실행 전후 row count, checksum, slow query, replication lag를 같은 표에 남겨 롤백 판단 근거로 삼는다.