oracle锁矩阵,你有多了解Oracle Enqueue lock队列锁机制?
你有多了解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队列锁机制?相关推荐
- oracle WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK问题分析
服务概述 财务系统出现业务卡顿,数据库实例2遇到>>> WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! <<<错误导致业 ...
- oracle dba_waiters中的lockid是什么,Oracle 锁机制学习
锁的简介: Oracle实现并发访问控制,通过锁来实现. 锁分为悲观锁(事务调度可能会串行调度)--事务级别的行级锁. 乐观锁(事务被串行调度)-- 时间戳和基于验证的事务调度. 所谓乐观锁是指事务调 ...
- Oracle索引、视图、序列、同义词、事务、锁机制详解
索引 什么是索引? -- 索引就类似于书的目录,根据目录查询内容会快很多,提高数据查询效率 创建索引有俩种方式 1.Oracle会自动为主键和唯一键创建索引 2.手动创建约束. 那么表中什么样的字段应 ...
- oracle实现矩阵倒置,Oracle 倒置矩阵 与 大小写问题
Oracle 倒置矩阵小插曲 首先是倒置矩阵问题: (要求一条SQL将下面的矩阵倒置) [附表:] create table student_data ( id number pr ...
- oracle锁住用户有什么用,oracle 用户user锁定lock如何知道是什么原因导致的
问题 数据库用户被锁了,如何查看什么原因导致被锁的呢 结论 1,dba_users是由底层表user$,profile$,profname$相关表构成,当然还有ts$ 2,dba_users与账户锁定 ...
- oracle内存锁,Oracle OCP之硬解析在共享池中获取内存锁的过程
(1)在父游标的名柄没有找到SQL语句的文本:select * from gyj_t1 where id=1; 2.释放library cache Latch 3.获得shared pool Latc ...
- oracle查询耗资源的进程,常用Oracle进程资源查询语句(运维必看)
(一)根据程序名称查找相关信息 select A.process,B.spid,A.sid,A.serial#,A.sql_address,A.username,A.program,A.status, ...
- Oracle教学辅助.书写历史的甲骨文--ORACLE公司传奇
书写历史的甲骨文--ORACLE公司传奇 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.dbanotes.net/dat ...
- oracle回退的办法,【案例】Oracle for update回退导致业务阻塞的解决办法
[案例]Oracle for update回退导致业务阻塞的解决办法 时间:2016-11-02 20:53 来源:Oracle研究中心 作者:HTZ 点击: 次 天萃荷净 Oracle研 ...
最新文章
- datanucleus mysql_DataNucleus Access Platform 3.1.2发布
- 彩色圆圈的html代码,HTML5 Canvas彩色圆点粒子飘动动画特效
- 神竜出击 合三为一!
- 【OpenCV3】cv::Mat中最值和均值的求解
- Maven(一):安装与环境配置、使用Maven搭建web项目
- CF835E-The penguin‘s game【交互】
- 卡诺模型案例分析_3个维度看竞品分析!
- [BUG]Git Sever搭建与相关错误处理
- Http Status Code (http 状态号)
- STM32读写DS1302,HAL库方式
- 被众多车企“抛弃”、增长放缓,Mobileye值不值500亿美元?
- 忘记 Apple ID 密码?重设 Apple ID 密码的 3 种方法
- 基于冷冻电镜图像的低通滤波(Lowpass Filter)算法
- 柳传志:联想发展过程中的三大突破
- Android 引入第三方字体库的简单使用
- hta 北京自动挂号器
- python感叹号是什么意思_监控画面的这个感叹号是什么意思
- 我将进化成一条狗(3)——区块链
- 从带宏密码保护的Excel文件中导出VBA代码和Sheet
- Three.js的DEM建模【数字高程模型】
热门文章
- 康拓电梯卡数据分析软件 门禁卡数据分析软件
- 计算机技术实验报告答案,大学计算机实验报告答案-实验1.docx
- python 如果文件夹不存在则新建
- 静态网络与动态网络的区别(简单易懂)
- m35c android 4.4,手机实时动态:评测:索尼M35c的整体性能简介及性价比如何
- 【sdx62】WCN6856加载wlan.ko系统崩溃问题解决方案
- Xunsearch迅搜项目实战经验
- 怎样训练左右手协调_怎样练习左右手协调能力?!
- c语言u8代表,请问头文件里的 u8,u16 vu 等符号是什么意思?
- Netgear R6220刷潘多拉盒子后的配置,提高网速