cache buffers chains:
使用高速缓冲区的时候,查询或修改hash chain要获得相应的cache buffers chains.
争用的话,主要是在两个方面:
1)低效的sql
2)hot block
select * from (select child#,gets,sleeps from v$latch_children where name='cache buffers chains'
order by sleeps desc)
where rownum<20
这条sql可以确定是低效sql引起的cache buffers chains还是host block引起的
如果在查询的结果当中,里面有特定cache buffers chains的get和sleep数值比其他的高,表明是hot block
否则就要查看是不是低效的sql引起的。
减少hot block可以提高pctfree,使用小块,分散快
---=============================================================
cache buffers LRU chains:
要查看或修改工作组(LRU+LRUW)的进程,就需要获得cache buffers lru chain
1)进程欲读取还没有装载到内存上的块时,通过查询LRU列分配到所需的空闲缓冲区,此过程需要
cache buffers lru chains
2)DBWR为了将脏缓冲区记录到disk上去,查询LRUW列,将相应的缓冲区移动到LRU列的过程,也需要
cache buffers lru chains
a.多个会话同时扫描一个table或一个index的时候,发生cache buffers chain的几率较大
b.多个会话同时扫描多个table或多个index的时候,发生cache buffers lru chain的几率较大
c.低效的index scan时,则会发生db file sequential read等待和cache buffers chain等待
d.不必要的table scan时候,则会发生db file scattered read等待和cache buffers lru chain的等待