[Oracle] 浅谈Lock与Latch
2013-07-12 00:00
127 查看
首先谈谈它们的共同点吧:它们本质上都是一种对资源的独占锁定,都是由并发引起(如果数据库只有一个session,就谈不上锁定)。
接着着重谈谈它们的不同点:
首先,它们的目的不一样,enqueue (即Lock,Oracle官方文档混合使用这两个名词,在等待事件里,可以看到大量的enqueue,其实就是lock)是为了解决业务层面的数据争用,而latch是为了解决内存资源的争用。
其次,它们的运行方式不一样,enqueue采用排队方式,先到先得,而latch的竞争近乎无序,以一种随机的方式,先到不一定先得,得靠抢,而且它还以一种时间片轮训的方式,不会一直霸占,即时还没运行完,时间片一到也。
第三,会话持有的时长不一样,enqueue根据业务情况,可能会持有较长时间,而latch通常非常短。第四,引起的原因不一样,enqueue太多通常是业务设计的问题,而latch过多,一般是数据库层面的问题(如未使用绑定变量、表或索引热块等)。
接着着重谈谈它们的不同点:
首先,它们的目的不一样,enqueue (即Lock,Oracle官方文档混合使用这两个名词,在等待事件里,可以看到大量的enqueue,其实就是lock)是为了解决业务层面的数据争用,而latch是为了解决内存资源的争用。
其次,它们的运行方式不一样,enqueue采用排队方式,先到先得,而latch的竞争近乎无序,以一种随机的方式,先到不一定先得,得靠抢,而且它还以一种时间片轮训的方式,不会一直霸占,即时还没运行完,时间片一到也。
第三,会话持有的时长不一样,enqueue根据业务情况,可能会持有较长时间,而latch通常非常短。第四,引起的原因不一样,enqueue太多通常是业务设计的问题,而latch过多,一般是数据库层面的问题(如未使用绑定变量、表或索引热块等)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030185/c9cbb8cd3a81bfe6c09c65c7ab549f6f.jpg)
相关文章推荐
- [Oracle] 浅谈Lock与Latch
- Oracle PGA和SGA区别以及latch和lock的使用场合
- [Oracle] Lock&Latch梳理
- Oracle中Latch 和 Lock的区别
- Oracle core06_latch&lock
- oracle中的Latch和Lock
- oracle latch 和 lock的差异
- 相克军_Oracle体系_随堂笔记014-锁 latch,lock
- oracle中lock和latch的用途
- .关于oracle latch和lock的一点点
- .关于oracle latch和lock的一点点
- [Oracle] 谈谈Lock和Latch
- oracle latch和lock详解的一些文章
- 浅谈oracle优化中表索引维护
- 浅谈Oracle死锁问题
- (2010-06-11)浅谈在Oracle中如何利用REDO实现故障恢复
- 通过案例学调优之--Oracle Latch基础知识
- Oracle管理专题之:用于监控Session、process、Lock的几个SQL语句
- oracle latch工作原理
- [Oracle] 浅谈Sequence(序列)