你有多了解Oracle Enqueue lock队列锁机制?

概念

Enqueue 队列锁 是 oracle中 主要的 并发访问控制 和锁的机制。   我们耳熟能详的 TM table lock表锁 和 TX 事务锁都是 enqueue 。 enqueue 最多可以有6个模式 , enqueue lock被设计出来用于那些需要较长时间锁机制的场景。

enqueue 的 6个 锁模式分别为: X 、 SSX、 S、SX、SS、NULL。

以下是当一个进程以某种模式持有某个enqueue , 而另一个进程尝试以某种模式request 这个enqueue的兼容矩阵:

请求模式

持有模式

NULL

SS

SX

S

SSX

X

NULL

成功

成功

成功

成功

成功

成功

SS

成功

成功

成功

成功

成功

失败

SX

成功

成功

成功

失败

失败

失败

S

成功

成功

失败

成功

失败

失败

SSX

成功

成功

失败

失败

失败

失败

X

成功

失败

失败

失败

失败

失败

再次比较 Enqueue 和Latch

latch是为了串行访问机制, 而enqueue 更多是为了并发访问控制

从设计出发 enqueue 可以被持有较长的一段时间 ; latch应当在极短的时间内(us级别)持有和释放,否则 latch将成为严重的性能瓶颈,乃至HANG

enqueue 的request 和release 要比latch 使用更多的CPU

enqueue 要比latch在结构上复杂地多

enqueue 有6种模式

enqueue 可能是LOCAL的 可能是cluster-wide global的

latch只对应一个process state object; 而enqueue 对应一个session state object和一个process state object

每一个 Enqueue Resource 都以2个 字母代表 例如  TX和TM ,并带有4个数字 例如 TM-00017927-00000000-00000000-00000000 称作 resource id 的4个部分,一般我们只用到前2个ID 。

在内部一个Enqueue Resource  对应一个  KSQRS  结构, 该KSQRS  结构  拥有三个列表:

owner list

waiter list

converter list

简单描绘一个enqueue resource的结构:

[owner list的头部]     [waiter list的头部]     [converter list的头部]   [resource ID : ID1 ID2 ID3 ID4] [enqueue type]

|                     |                            |

S                     X                           S->X

|                     |

S                    SX

|

S

oracle锁矩阵,你有多了解Oracle Enqueue lock队列锁机制?相关推荐

  1. oracle WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK问题分析

    服务概述 财务系统出现业务卡顿,数据库实例2遇到>>> WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! <<<错误导致业 ...

  2. oracle dba_waiters中的lockid是什么,Oracle 锁机制学习

    锁的简介: Oracle实现并发访问控制,通过锁来实现. 锁分为悲观锁(事务调度可能会串行调度)--事务级别的行级锁. 乐观锁(事务被串行调度)-- 时间戳和基于验证的事务调度. 所谓乐观锁是指事务调 ...

  3. Oracle索引、视图、序列、同义词、事务、锁机制详解

    索引 什么是索引? -- 索引就类似于书的目录,根据目录查询内容会快很多,提高数据查询效率 创建索引有俩种方式 1.Oracle会自动为主键和唯一键创建索引 2.手动创建约束. 那么表中什么样的字段应 ...

  4. oracle实现矩阵倒置,Oracle 倒置矩阵 与 大小写问题

    Oracle 倒置矩阵小插曲 首先是倒置矩阵问题: (要求一条SQL将下面的矩阵倒置) [附表:] create  table    student_data  ( id    number   pr ...

  5. oracle锁住用户有什么用,oracle 用户user锁定lock如何知道是什么原因导致的

    问题 数据库用户被锁了,如何查看什么原因导致被锁的呢 结论 1,dba_users是由底层表user$,profile$,profname$相关表构成,当然还有ts$ 2,dba_users与账户锁定 ...

  6. oracle内存锁,Oracle OCP之硬解析在共享池中获取内存锁的过程

    (1)在父游标的名柄没有找到SQL语句的文本:select * from gyj_t1 where id=1; 2.释放library cache Latch 3.获得shared pool Latc ...

  7. oracle查询耗资源的进程,常用Oracle进程资源查询语句(运维必看)

    (一)根据程序名称查找相关信息 select A.process,B.spid,A.sid,A.serial#,A.sql_address,A.username,A.program,A.status, ...

  8. Oracle教学辅助.书写历史的甲骨文--ORACLE公司传奇

    书写历史的甲骨文--ORACLE公司传奇 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.dbanotes.net/dat ...

  9. oracle回退的办法,【案例】Oracle for update回退导致业务阻塞的解决办法

    [案例]Oracle for update回退导致业务阻塞的解决办法 时间:2016-11-02 20:53   来源:Oracle研究中心   作者:HTZ   点击: 次 天萃荷净 Oracle研 ...

最新文章

  1. datanucleus mysql_DataNucleus Access Platform 3.1.2发布
  2. 彩色圆圈的html代码,HTML5 Canvas彩色圆点粒子飘动动画特效
  3. 神竜出击 合三为一!
  4. 【OpenCV3】cv::Mat中最值和均值的求解
  5. Maven(一):安装与环境配置、使用Maven搭建web项目
  6. CF835E-The penguin‘s game【交互】
  7. 卡诺模型案例分析_3个维度看竞品分析!
  8. [BUG]Git Sever搭建与相关错误处理
  9. Http Status Code (http 状态号)
  10. STM32读写DS1302,HAL库方式
  11. 被众多车企“抛弃”、增长放缓,Mobileye值不值500亿美元?
  12. 忘记 Apple ID 密码?重设 Apple ID 密码的 3 种方法
  13. 基于冷冻电镜图像的低通滤波(Lowpass Filter)算法
  14. 柳传志:联想发展过程中的三大突破
  15. Android 引入第三方字体库的简单使用
  16. hta 北京自动挂号器
  17. python感叹号是什么意思_监控画面的这个感叹号是什么意思
  18. 我将进化成一条狗(3)——区块链
  19. 从带宏密码保护的Excel文件中导出VBA代码和Sheet
  20. Three.js的DEM建模【数字高程模型】

热门文章

  1. 康拓电梯卡数据分析软件 门禁卡数据分析软件
  2. 计算机技术实验报告答案,大学计算机实验报告答案-实验1.docx
  3. python 如果文件夹不存在则新建
  4. 静态网络与动态网络的区别(简单易懂)
  5. m35c android 4.4,手机实时动态:评测:索尼M35c的整体性能简介及性价比如何
  6. 【sdx62】WCN6856加载wlan.ko系统崩溃问题解决方案
  7. Xunsearch迅搜项目实战经验
  8. 怎样训练左右手协调_怎样练习左右手协调能力?!
  9. c语言u8代表,请问头文件里的 u8,u16 vu 等符号是什么意思?
  10. Netgear R6220刷潘多拉盒子后的配置,提高网速