2011-01-04 14:10:31 에 등록된 질문입니다. 초보 님께서 질문해 주셨습니다.
또 들렀습니다.
랜덤하게 생성한 1000만건 테이블(big_t1)을 대상으로
아래 plsql 블럭을 두 세션에서 각기 동시 실행했습니다.
DECLARE
cnt number;
BEGIN
FOR i IN 0 .. 1000000
LOOP
select seq into cnt from big_t1 where seq = 1 and rownum <= 1;
END LOOP;
END;
동시 실행중인 세션에 대해
아래 SQL로 모니터링 했을때.
SELECT
vs.SID, vs.serial#, vs.status,
sw.event, sw.p1, sw.p2, sw.p3, sw.wait_time, sw.seconds_in_wait, sw.state
FROM
v$session vs,
v$session_wait sw
WHERE 1=1
AND vs.status = 'ACTIVE'
AND vs.username = 'SCOTT'
AND sw.SID = vs.SID
두 세션 모두 SQL 실행이 진행 중일때는
두 세션에서 모두 latch: cache buffers chains 대기 이벤트가 보였습니다.
이상한 것은 한쪽 세션이 먼저 SQL 실행이 종료가 된 상황에서도
남아 있는 다른 세션에서는 지속해서 latch: cache buffers chains 대기 이벤트가
발생하고 있었고 몇분간 지속됩니다. 여러번 반복해봐도 마찬가지였구요.
그 순간에 v$latchholder를 조회하면 아무 것도 없었구요.
이런 현상은 어떻게 이해해야 할까요?