쓰기 경로의 상태 변화
제약은 즉시 검사하고, 벌크 적재는 검사를 뒤로 미룹니다
평소에는 INSERT / UPDATE / DELETE마다 무결성 검사가 붙어 일관성을 지키고, 대량 적재 구간에서는 그 검사를 잠시 비워 처리량을 올린 뒤 마지막에 다시 검증합니다.
1. 정상 운영
제약 ON
쓰기마다 추가 작업이 즉시 수행됨
데이터가 들어오는 순간 바로 검사하므로 안전하지만, 쓰기 경로는 길어집니다.
PK/UK
중복 확인과 함께 인덱스 갱신이 일어납니다.
FK
부모·자식 테이블을 행마다 조회하므로 벌크 적재에서 가장 부담이 큽니다.
CHECK
조건식을 평가합니다. 단순 비교는 대체로 가벼운 편입니다.
결과: 데이터 품질은 바로 보장되지만 쓰기 처리량은 줄어듭니다.
2. 대량 적재
일시 OFF
반복 검사를 건너뛰고 먼저 밀어 넣음
대량 INSERT 동안 제약을 잠시 비활성화하면 행마다 붙던 검사 비용이 빠집니다.
효과
참조 확인과 트리거 호출이 생략되어 적재 속도가 올라갑니다.
주의
이 구간은 잠정적으로 무결성 보장이 비어 있는 상태입니다.
ALTER TABLE orders DISABLE CONSTRAINT fk_customer; -- bulk INSERT
3. 적재 후 복구
다시 ON
검사를 재개하고 누적 데이터를 다시 확인
적재가 끝나면 제약을 다시 켜고, 그동안 쌓인 데이터를 검증한 뒤 정상 운영으로 돌아갑니다.
복구
ENABLE 후 검증을 통과해야 이후 쓰기에도 다시 제약이 적용됩니다.
의미
성능은 일시적으로 얻고, 마지막에 일관성을 회복하는 운영 패턴입니다.
ALTER TABLE orders ENABLE CONSTRAINT fk_customer; -- 검증 후 정상 운영 재개