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 이벤트는 서로 다른 테이블이나 인덱스들을 여러 세션이 동시에 처음 읽거나 데이터의 변경이 빈번할 때 발생한다.
문서에 대하여
- 최초작성자 : 황종필
- 최초작성일 : 2010년 09월 18일
- 이 문서는 오라클클럽 코어 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
- {*}이 문서의 내용은 (주)엑셈에서 출간한 'PRACTICAL OWI IN ORACLE 10G'를 참고하였습니다.*