[Oracle] 浅谈Lock与Latch
时间:2024-01-15 18:02:37
首先谈谈它们的共同点吧:它们本质上都是一种对资源的独占锁定,都是由并发引起(如果数据库只有一个session,就谈不上锁定)。
接着着重谈谈它们的不同点:
首先,它们的目的不一样,enqueue (即Lock,Oracle官方文档混合使用这两个名词,在等待事件里,可以看到大量的enqueue,其实就是lock)是为了解决业务层面的数据争用,而latch是为了解决内存资源的争用。
其次,它们的运行方式不一样,enqueue采用排队方式,先到先得,而latch的竞争近乎无序,以一种随机的方式,先到不一定先得,得靠抢,而且它还以一种时间片轮训的方式,不会一直霸占,即时还没运行完,时间片一到也。
第三,会话持有的时长不一样,enqueue根据业务情况,可能会持有较长时间,而latch通常非常短。第四,引起的原因不一样,enqueue太多通常是业务设计的问题,而latch过多,一般是数据库层面的问题(如未使用绑定变量、表或索引热块等)。
标签:Oracle,Lock,Latch
0
投稿
猜你喜欢
一文搞懂Go语言操作Redis的方法
2024-04-25 13:20:25
sql server中错误日志errorlog的深入讲解
2024-01-23 11:57:58
Python开发之利用re模块去除代码块注释
2022-08-26 22:11:59
Python通过len函数返回对象长度
2023-05-05 06:04:12
Python算法之栈(stack)的实现
2022-09-01 15:26:15
SESSION存放在数据库用法实例
2024-05-11 10:09:56
Go 中的空白标识符下划线
2024-04-29 13:04:42
解读HTML:大厦的基石
2008-12-01 12:57:00
如何判断js脚本加载完成
2008-11-04 13:53:00
vue项目中安装less依赖的过程
2024-05-10 14:21:12
Python sklearn预测评估指标混淆矩阵计算示例详解
2023-12-19 23:39:21
解决golang内存溢出的方法
2024-05-21 10:20:12
JS设计模式之责任链模式实例详解
2023-03-17 08:23:42
Python调用百度OCR实现图片文字识别的示例代码
2021-04-07 14:21:50
python买卖股票的最佳时机(基于贪心/蛮力算法)
2022-12-26 14:44:24
Javascript对象中关于setTimeout和setInterval的this介绍
2024-04-17 09:55:15
asp检测是否为中文字符函数
2011-04-07 11:19:00
ORACLE 自动提交问题
2023-07-24 10:43:13
浅析Go设计模式之Facade(外观)模式
2023-07-16 19:23:08
Oracle数据库中表空间的基本管理操作小结
2024-01-26 23:18:26