latch: cache buffers chains

 

http://www.xifenfei.com/1109.html

当一个数据块读入sga区,相应的buffer header会被放置到hash列表上,我们称其这hash chains,chain在中文的意为链条或串的意思,表达就是关连性.如果一个进程想访问或修改hash chain上的block,它首先要获得”cache buffers chains” latch。

原因一:低效率的SQL语句(主要体现在逻辑读过高)
cache buffers chains latch很大程度与逻辑读有关,所以要观注v$sql中BUFFER_GETS/EXECUTIONS大的语句。
同时每一个逻辑读需要一个latch get 操作及一个cpu操作,这样的sql也会很耗cpu资源。

cache buffers chains锁存器的争用原因一:低效率的SQL语句
在某些环境中,应用程序打开执行相同的低效率SQL语句的多个并发会话,这些SQL语句都设法得到相同的数据集。较小的逻辑读意味着较少的latch get操作,从而减少锁存器争用并改善性能。
每次执行都带有高 BUFFER_GETS(逻辑读取)的SQL语句是主要的原因。

原因二:热块(访问过于频繁)

cache buffers chains锁存器的争用原因二:热块
当多个会话重复访问一个或多个由同一个子cache buffers chains锁存器保护的块时,热块就会产生。当多个会话争用cache buffers chains锁存器时,找出是否有热块的最好的方法是检查latch free等待事件的P1RAW参数值
找出热点块方法一:

--找出p1raw
select p1,p1raw from v$session_wait where event= 'latch: cache buffers chains' ;
 
--找到对象
SELECT /*+ RULE */
  E.OWNER || '.' || E.SEGMENT_NAME SEGMENT_NAME,
  E.PARTITION_NAME,
  E.EXTENT_ID EXTENT#,
  X.DBABLK - E.BLOCK_ID + 1 BLOCK#,
  X.TCH,
  L.CHILD#
   FROM SYS.V$LATCH_CHILDREN L, SYS.X$BH X, SYS.DBA_EXTENTS E
  WHERE X.HLADDR = '00000002576EE018' --p1raw
    AND E.FILE_ID = X.FILE#
    AND X.HLADDR = L.ADDR
    AND X.DBABLK BETWEEN E.BLOCK_ID AND E.BLOCK_ID + E.BLOCKS - 1
  ORDER BY X.TCH DESC ;

找出热点块方法二:

--直接找出热点块
SELECT OBJECT_NAME, SUBOBJECT_NAME
   FROM DBA_OBJECTS
  WHERE DATA_OBJECT_ID IN
        ( SELECT DATA_OBJECT_ID
           FROM ( SELECT OBJ DATA_OBJECT_ID, FILE#, DBABLK, CLASS, STATE, TCH
                   FROM X$BH
                  WHERE HLADDR IN ( SELECT ADDR
                                     FROM ( SELECT ADDR
                                             FROM V$LATCH_CHILDREN
                                            ORDER BY (GETS + MISSES + SLEEPS) DESC )
                                    WHERE ROWNUM < 10)
                  ORDER BY TCH DESC )
          WHERE ROWNUM < 10);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值