사용자 도구

사이트 도구


study:oracle:adv_owi_10g:buffer_cache_wait_event

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
study:oracle:adv_owi_10g:buffer_cache_wait_event [2009/08/11 15:36]
deathguy 삭제
study:oracle:adv_owi_10g:buffer_cache_wait_event [2009/08/11 16:13] (현재)
deathguy
줄 1: 줄 1:
 ====== Buffer Cache에서의 대기이벤트들 ====== ====== 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 이벤트에 대기
  
-===== 111111 =====+===== buffer busy waits ===== 
 +  * 10g 이전 
 +  다른 세션이 Buffer cache로 적재하고 있는 블록을 읽으려고 할 때 buffer busy waits 대기이벤트가 발생 
 +  * 10g  
 +  다른 세션이 해당 블록의 변경을 완료하기를 대기 할 때 buffer busy waits 대기이벤트가 발생
  
-  2222+===== 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.1249972563.txt.gz · 마지막으로 수정됨: 2009/08/11 15:36 저자 deathguy