문제
다음 상황에서 데이터 정합성을 유지하면서 대용량 테이블의 데이터를 삭제하는 방법으로 가장 적절한 것은?
조건:
- 1억 건의 데이터가 있는 로그 테이블
- 외래키 제약조건 존재
- 트랜잭션 로그 공간 부족
- 테이블 구조는 유지해야 함
- 외래키 제약조건을 해제하지 않고 처리해야 함
① DELETE FROM 로그테이블; ② DROP TABLE 로그테이블; ③ 외래키 제약조건 비활성화 후 TRUNCATE, 이후 제약조건 재활성화 ④ 배치 단위로 DELETE 문을 여러 번 실행
정답
4번
해설
대용량 테이블에서 외래키 제약조건을 유지하면서 로그 공간 부족 문제까지 고려해야 한다면, 배치 단위 DELETE가 가장 적절하다. 한 번에 전체 DELETE를 수행하면 트랜잭션 로그가 급격히 증가할 수 있고, DROP은 테이블 구조를 삭제하므로 조건에 맞지 않는다. 외래키를 비활성화한 후 TRUNCATE하는 방식은 DBMS 의존적이며 정합성 유지 측면에서 일반 해법으로 보기 어렵다.