ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle latch_自译文_(2)

oracle latch_自译文_(2)

原创 Linux操作系统 作者:wisdomone1 时间:2010-04-04 10:08:45 0 删除 编辑
latch(二)

续上一节
  latch(一)自译文
http://space.itpub.net/9240380/viewspace-631161
 
cursor:mutex S
  我们尝试以共享模式获取在父cursor上面的一个mutex或者v$sqlstat bucket
 
  这个mutex是in flux(实际就是有些人正以共享模式持有它),因此我们要等待只到拥有者完成它的共享持有
 
  适用于:检查父cursor或者查询v$sqlstat bucket


cursor:mutex X
  我们尝试以独有模式获取在父cursor上面的一个mutex或者v$sqlstat bucket
 
  有些人已经以未兼容模式持有mutex
    有些人指:
         已经以x 模式(独有)占用mutex
         或者以S 模式(共享)有好多占用者持有mutex

  适用于:在父cursor下加载新的子cursor,修改v$sqlstat bucket,更改(新)绑定抓取的数据




cursor:pin S
  我们尝试以共享模式pin(固定)cursor(比如要执行)

  用于固定住子cursor的mutex叫:in flux,有些人正在固定已经固定的cursor

  我们必须等待直到其它会话完成它们的固定(pin)请求



cursor:pin X
   我们尝试以独占模式pin(固定)cursor,但其它人已经用非兼容模式固定(pin)了这个cursor

   或是一个会话已经以x 模式固定了cursor或者多个会话以共享模式固定了它



cursor:pin S wait on X

  我们尝试以共享模式固定一个cursor,但已有一些人以独有模式固定了它

  适用于:其它会话正在加载用于解析(子游标)



在11g中,大多数library cache latches已被library cache hash buckets的mutexes 代替
     共有131072个 KGL hash  buckets
     每个buckets被独立的mutex保护
     虚假竞争存在的机会更少
    



library cache:mutex S
    尝试以共享模式获取library cache hash bucket的一个mutex
    这个mutex已被非兼容模式占用


library cache:mutex X
   尝试以独有模式获取library cache hash bucket的一个mutex
   这个mutex已被非兼容模式占用





附上一段cursor and library cache mutex content detail,供参考
SQL> @sed mutex
EVENT_NAME PARAMETER1 PARAMETER2 PARAMETER3
------------------------- --------------- --------------- ------------
cursor: mutex S idn value where|sleeps
cursor: mutex X idn value where|sleeps
cursor: pin S idn value where|sleeps
cursor: pin S wait on X idn value where|sleeps
cursor: pin X idn value where|sleeps
library cache: mutex S idn value where
library cache: mutex X idn value wher

idn=library cache object hash value(cursor:*events)
idn=library cache hash bucket number(library cache:events)

values=
   每个字(2或4个bytes)的低bytes - 被共享模式引用的mutex数

   每个字(2或4个bytes)的高bytes -专用模式占用者的sid



where=到x$mutex_sleep.locatin_id的地图索引或叫坐标


_spin_count
   latch的spin计数--在放弃或睡眠前等待的次数
   经常被混淆哟
   如果没有其它问题并且系统有充足的cpu资源,应该增加


_latch_classes 和_latch_class_x
   可以给不同的latches配置不同的spin 计数

   select indx,spin,yield,waittime from x$ksllclass



_kgx_spin_count
   在11g以后,对于KGX mutex的固定计数

       修复了固定原因,你就不需要调节spin count了,哈哈

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-631300/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12690554