[Oracle] 浅谈Lock与Latch

发布时间:2022-04-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了[Oracle] 浅谈Lock与Latch脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

首先谈谈它们的共同点吧:它们本质上都是一种对资的独占锁定,都是由并发引起(如果数据库只有一个session,就谈不上锁定)。

接着着重谈谈它们的不同点:

首先,它们的目的不一样,enqueue (即Lock,oracle官方文档混合使用这两个名词,在等待事件里,可以看到大量的enqueue,其实就是lock)是为了解决业务层面的数据争用,而latch是为了解决内存资源的争用。

其次,它们的运行方式不一样,enqueue采用排队方式,先到先得,而latch的竞争近乎无序,以一种随机的方式,先到不一定先得,得靠抢,而且它还以一种时间片轮训的方式,不会一直霸占,即时还没运行完,时间片一到也。

第三,会话持有的时长不一样,enqueue根据业务情况,可能会持有较长时间,而latch通常非常短。第四,引起的原因不一样,enqueue太多通常是业务设计的问题,而latch过多,一般是数据库层面的问题(如未使用绑定变量、表或索引热块等)。

脚本宝典总结

以上是脚本宝典为你收集整理的[Oracle] 浅谈Lock与Latch全部内容,希望文章能够帮你解决[Oracle] 浅谈Lock与Latch所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:Lock