IV. latch: cache buffers lru chain

1) Event 정의

  • LRU List를 탐색하기 위해 cache buffers lru chain latch를 획득하기 위해 대기하는 Event
    • P1 = address
    • P2 = number
    • P3 = tries

2) 대기발생 사유

  • Memory에 올라오지 않은 Block을 읽고자 할 경우, Free Buffer를 할당 받기 위해 LRU List를 탐색. 많은 세션이 동시에 Free Buffer를 Scan하면 Latch 경합 유발
  • DBWR이 Dirty Buffer를 파일에 기록하기 위해 LRUW 리스트를 탐색하고, 해당 Buffer를 LRU List로 이동 시.

버퍼 캐시에 원하는 블록이 존재하지 않아 Working Set (LRU+LRUW)을 탐색하고자 할때에는 cache buffers lru chain 래치를 획득해야 한다. cache buffers lru chain 래치를 획득하는 과정에서 경합이 발생하면 latch: cache buffers lru chain 이벤트를 대기하게 된다.

  • 주요 대기발생 사유
    • 프리 버퍼 탐색
    • 더티 버퍼를 파일에 기록하기 위해 LRUW 리스트 탐색
    • DBWR에 의해서 기록된 버퍼를 LRU 리스트의 보조 리스트로 옮길 경우
      일반적으로, latch: cache buffers lru chain 이벤트의 가장 주된 요인은 비효율적인 SQL 문장의 과도한 프리 버퍼 요청이다.

참고
DBWR가 더티 버퍼를 파일에 기록하는 경우

  • 오라클이 프리 버퍼를 획득하기 위해 요청할 경우
  • Parallel query, tablespace backup, truncate/drop 등의 작업 수행
  • Check pointing 작업 ( for instance recovery )
  • 관리자의 의한 체크포인트 수행 및 로그 파일 스위치

Latch: cache buffers chains latch VS Latch: cache buffers lru chain latch

  • 일반적으로 latch: cache buffers chains 이벤트는 동일 테이블이나 인덱스를 여러 세션이 동시에 스캔 시에 발생한다.
  • 일반적으로 latch: cache buffers lru chain 이벤트는 서로 다른 테이블이나 인덱스들을 여러 세션이 동시에 처음 읽거나 데이터의 변경이 빈번할 때 발생한다.

문서에 대하여