ORACLE锁存器(LATCH)

简介: 我的读书笔记:转载请注明   锁存器:    什么是锁存器: 锁存器是存在于ORACLE中用于保证一些内存结构一致性的轻量级锁,为什么说是轻量级的,应该是锁存器一般等待的时间较短为了保证不发生死锁,     锁存器的级别:锁存器分为0-13 14种模式,在willing-to-wait模式下只能获得更改等级的锁存器,如果想获得同等级或者更低 级别的锁存器,就必须使用no-wait模式进行获取。
我的读书笔记:转载请注明
 
锁存器:
    什么是锁存器: 锁存器是存在于ORACLE中用于保证一些内存结构一致性的轻量级锁,为什么说是轻量级的,应该是锁存器一般等待的时间较短为了保证不发生死锁,
    锁存器的级别:锁存器分为0-13 14种模式,在willing-to-wait模式下只能获得更改等级的锁存器,如果想获得同等级或者更低 级别的锁存器,就必须使用no-wait模式进行获取。如果想查看锁存器的等级可以参考v$latch,v$latch_children的LEVEL#字段。
    锁存器类型:锁存器类型包括 willing-to-wait和no-wait模式
  willing-to-wait模式:这个模式就是要一直等待直到获得锁存器为止,在初次获得latch失败的情况下,latch会进入spin,直到达到_spin_count的值。
  (这个参数参考如下:
  _spin_count:willing-to-wait 模式的锁存器在获得锁存器失败的情况下进行循环获取的次数,如果超过了这个次数就进行睡眠,只有1个CPU的机器上不存在自旋   也就是这个参数为1)
  如果在spin过程中任然不能得到latch,这个时候就进入sleep,表现在v$session_wait中就是latch:***
进入了睡眠过后等待唤醒也有2中方式,
     1、可以在进入超时后唤醒重新进行获取,如果不能得到任然经理spin,如果还不能再进行睡眠,超时的算法以1/100秒为单位初次随眠是1、1、2、2、4、4、8、8、16、16最多为2秒,为神马引入这样的机制,因为spin也是相当耗费CPU的,所以引入这样的机制,避免过多的cpu资源浪费。
      2、另外一种方法就是通过锁存器列表,使用这样的方式锁存器很少,比如shared pool,library cache,这种机制说的是使用一个列表来维护等待的进程,如果latch释放,然后列表中的进程进行竞争获得latch,列表本生也不是LRU原则,是竞争原则。
   no-wait模式:如果进程项获得比当前latch更低或者相同级别的latch就必须用这样的方式,这种方式是为了避免死锁,这样的模式不存在spin和sleep,能获取就获取如果不能获取,就通过willing-to-wait模式重新按顺序获取,比如我当前LATCH为level 1,3 如果某个进程项获取2 level 的latch,就通过no-wait模式,如果是失败就通过2,3的顺序重新获取。
  相关视图:
 通过v$latch,v$latch_children视图的字段可以看出
 gets 是willing-to-wait模式下需求的次数
 misses 是willing-to-wait模式下到睡眠之前获取失败的次数
 spin_gets 是willing-to-wait模式下通过spin成功获得latch的次数
 sleeps 是willing-to-wait模式睡眠的次数
 immediate_gets 就是no_wait模式下获得锁存器成功的次数
 immediate_misses 就是no_wait模式下获得锁存器失败的次数
 wait_time 以毫秒为单位的等待时间 
如果有误请大虾指出。thx
相关文章
|
监控 Oracle 安全
Oracle数据库用户频繁被锁问题原因排查及解决
由于应用环境下Oracle用户总是频繁被锁,经常不能执行数据库事务操作,严重影响了系统运行效率。通过问题原因分析及排查,发现了原因,在此记录一下。
3992 0
Oracle数据库用户频繁被锁问题原因排查及解决
|
4月前
|
SQL Oracle 关系型数据库
Oracle-锁解读
Oracle-锁解读
58 0
|
12月前
|
SQL 存储 Oracle
Oracle优化03-Latch和等待
Oracle优化03-Latch和等待
109 0
|
12月前
|
运维 Oracle 关系型数据库
Oracle优化02-锁和阻塞
Oracle优化02-锁和阻塞
86 0
|
SQL Oracle 关系型数据库
Oracle 锁表查询及解锁kill进程
1. 查看被锁定的表 SELECT OBJECT_NAME, MACHINE, S.SID, S.
2751 0
|
SQL Oracle 关系型数据库
|
Oracle 关系型数据库
|
SQL Oracle 关系型数据库