SYS@orcl>alter table ora1.emp_test1 disable primary key;
cache buffers chains latch(cbc latch)와 cache buffers lru chain latch(cblc latch) 래치 경합간의 차이점
- 동일한 table이나 index를 여러 세션이 동시에 스캔하는 경우라면 cache buffers chains latch(cbc latch)경합이 발생할 확률이 높다. 동일 체인에 대한 경합이 발생하기 때문이다.
- 하지만 다른 table이나 index들을 여러 세션이 동시에 스캔하는 경우라면 cache buffers lru chain latch(cblc latch) 경합이 발생할 확률이 높다. 여러 세션들이 모두 다른 block들을 메모리에 올리는 과정에서 free buffer를 확보하기 위한 요청이 많아지고 이로 인해 Working Set에 대한 경합이 발생할 확률이 높아진다.
특히 데이터의 변경이 빈번해서 dirty buffer의 갯수가 많고 이로인해 DBWR이 체크포인트를 위해 LRUW리스트를 탐색하는 횟수가 잦다면 cache buffers lru chain latch(cblc latch) 래치의 경합은 더욱 심해진다.
cache buffers lru chain 래치 경합의 또 다른 특징은 물리적 I/O 를 수반한다는 것이다.
(위의 내용으로 종합해 보면 disk 의 data를 메모리로 올리는 과정에서 다른 block에 있는 값들을 메모리에 올리기 때문에 상대적으로 메모리에 free buffer요청이 많아지게 되고 이로 인해 lru list와 lruw list에 대한 경합이 발생하게 된다
- 비효율적인 index scan에 의한 문제라면 db file sequential read 대기와 cache buffers lru chain latch 경합이 함께 발생하게 되는 경우가 많다. (db file sequential read 는 single block 을 읽을 때 발생 한다.)
- 비효율적인 full table scan 이 많다면 db file scattered read 대기와 cache buffers lru chain latch 경합이 같이 발생하는 경우가 많다. (db file scattered read 는 multi block 을 읽을때 발생한다.)
■ buffer cache 의 크기가 지나치게 작거나 check point 주기가 지나치게 짧은 경우에도 cache buffers chain latch 경합이 증가 할 수있다. 하지만 요즘 대형 시스템에서는 GB 단위의 buffer cache를 사용하며 check point 주기는 거의 default 값을 사용하기 때문에 cache buffers lru chain latch 경합의 원인은 비효율적인 SQL 외에는 찾기가 어렵다고 한다.
(다른말로 거의 비효율적인 SQL에서 cache buffers lru chain latch 경합이 일어난다는 소리이다.)
'스터디북' 카테고리의 다른 글
[11/07] duplicate DB (0) | 2015.11.07 |
---|---|
<11/06> 사랑은 타이밍 (0) | 2015.11.06 |
<11/3> A (0) | 2015.11.03 |
<11/2> 이젠 아니야 (0) | 2015.11.02 |
<11/1> 일하러 가야 돼 (0) | 2015.11.01 |