[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

标签: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
  • asp之家 网络编程 m.aspxhome.com