사례 4- 지연된 블록 크린 아웃으로 인한 배치 작업 성능 저하 (by kwlee55)[2013.01.07]
현상
하루 업무가 19:00에 종료되며, 매일 20:00에 하루 업무를 결산하는 여러 개의 배치 작업을 수행한다.
배치 작업이 효율적으로 수행되는지 점검하기 위해 AWR DB 보고서를 생성하였다.
Top 5 Time Events
latch : row cache objects 이벤트를 제외한 상위 이벤트는 병렬SQL처리로 배치 작업을 수행하면서 발생되는 일반적인 대기 이벤트 이다.
latch : row cache objects로 인한 성능 지연이 있을 거라고 예상할 수 있다.
DBA_HIST_ACTIVE_SESSION_HISTORY 조회를 통한 문제 오브젝트와 SQL 확인
확인 내용
상위 10개 테이블에서 latch : row cache objects 경합이 집중되고 있음
일 배치 SQL에서 latch : row cache objects 경합이 집중적으로 발생하고 있음
일 배치 SQL은 latch : row cache objects 경합이 집중해서 발생하는 상위 10개 테이블을 검색하거 DML작업을 발생시킴
일 배치 SQL이 검색 및 변경하는 테이블의 증가폭은 크지 않음
상위 10개 테이블은 업무 시간중 DML이 빈번히 발생하는 주요 테이블임
최근 업무 요건 변경으로 한 트랜잭션이 50~200건 이상 변경시키는 경우가 많이 증가하였음
Dictionary Cache Stats 단위 보고서
어떤 종류의 row cache objects가 가장 빈번하게 요청되는지 확인한다.
dc_rollback_segmetns 요청 수치가 매우 높으며 이로써 언두 세그먼트의 요청이 급격히 증가하였음을 파악하였다.
Instance Activity Stats 단위 보고서
언두 세그먼트 관련 통계 수치를 확인한다.
지연된 블록 클린 아웃시 증가하는 'cleanouts only - consistent read'의 수치가 급격히 증가하였음을 확인할 수 있었다.
결론
업무 시간에 상위 10개 테이블에 대한 DML이 빈번히 진행됨에 따라 변경 블록들이 증가하였고, 이 블록들을 일 배치 SQL에서 사용하려고 할 때 지연된 블록 클린 아웃을 수행하기 위해 언드 세그먼트를 빈번히 확인하면서 언두 세그먼트에 대한 latch : row cache objects 대기 이벤트가 증가한 것이다.
일 배치 작업 전 latch : row cache objects 대기 이벤트 발생 5개 테이블에 대한 전체 테이블 스캔을 실시하여 지연된 블록 크린 아웃을 미리 수행한다.