사용자 도구

사이트 도구


study:oracle:adv_owi_10g:buffer_cache_wait_event

Buffer Cache에서의 대기이벤트들

latch: cache buffers chains

버퍼 캐시(Buffer cache) 에서 특정 Block을 탐색하고자 하는 프로세스는 cache buffer chains 래치를 획득하여야 하는데 이 과정에서 경합이 발생될때 발생되는 래치 참고로 9i 이후부터는 읽기 전용으로 체인을 탐색할 경우 cache buffers chains 래치를 Shared 모드로 공유 할수 있다 발생되는 대표적인 이유

  • 비효율적인 SQL
  • 핫블록(Hot Block)

latch: cache buffers lru chains

Working Set (LRU + LRUW) 을 탐색하거나 변경하려는 프로세스는 항상 해당 Working Set을 관리하는 cache buffers lru chain 래치를 획득해야함 이때 획득하는 과정에서 경합이 발생될 경우 latch: cache buffers lru chain 이벤트에 대기

buffer busy waits

  • 10g 이전

다른 세션이 Buffer cache로 적재하고 있는 블록을 읽으려고 할 때 buffer busy waits 대기이벤트가 발생

  • 10g

다른 세션이 해당 블록의 변경을 완료하기를 대기 할 때 buffer busy waits 대기이벤트가 발생

read by other session

buffer busy global cache

write complete waits

buffer lock

오라클은 Row level lock을 제공한다. 하지만 하나의 블록엔 여러개의 row 들이 존재하는데 row level lock을 제공하기 위해서는 반드시 row가 들 포함되어있는 블록에 대해서 lock을 걸어 자신만이 블록을 변경하고 있다는 것을 보장받아야 한다. 이경우에 획득해야 하는 락을 buffer lock라 한다 buffer lock 역시 다른 lock과 마찬가지로 획득하지 못할경우 대기해야 한다 buffer lock mode

  • Shared mode : 버퍼를 읽는 과정일때 획득
  • Exclusive mode : 버퍼를 변경하는 과정일때 획득

free buffer waits

db file sequential read

db file scattered read

enq: HW - contention

enq: TC - contention

enq: CI - contention

enq: RO - contention

hot block

study/oracle/adv_owi_10g/buffer_cache_wait_event.txt · 마지막으로 수정됨: 2009/08/11 16:13 저자 deathguy