悲观锁与乐观锁
2017-11-03 00:00
183 查看
悲观锁:假定并发环境是悲观的,如果发生并发冲突,就会破坏一致性,所以要通过独占锁彻底禁止冲突发生。有一个经典比喻,“如果你不锁门,那么捣蛋鬼就回闯入并搞得一团糟”,所以“你只能一次打开门放进一个人,才能时刻盯紧他”。
乐观锁:假定并发环境是乐观的,即,虽然会有并发冲突,但冲突可发现且不会造成损害,所以,可以不加任何保护,等发现并发冲突后再决定放弃操作还是重试。可类比的比喻为,“如果你不锁门,那么虽然捣蛋鬼会闯入,但他们一旦打算破坏你就能知道”,所以“你大可以放进所有人,等发现他们想破坏的时候再做决定”。
通常认为乐观锁的性能比悲观所更高,特别是在某些复杂的场景。这主要由于悲观锁在加锁的同时,也会把某些不会造成破坏的操作保护起来;而乐观锁的竞争则只发生在最小的并发冲突处,如果用悲观锁来理解,就是“锁的粒度最小”。但乐观锁的设计往往比较复杂,因此,复杂场景下还是多用悲观锁。
首先保证正确性,有必要的话,再去追求性能。
乐观锁:假定并发环境是乐观的,即,虽然会有并发冲突,但冲突可发现且不会造成损害,所以,可以不加任何保护,等发现并发冲突后再决定放弃操作还是重试。可类比的比喻为,“如果你不锁门,那么虽然捣蛋鬼会闯入,但他们一旦打算破坏你就能知道”,所以“你大可以放进所有人,等发现他们想破坏的时候再做决定”。
通常认为乐观锁的性能比悲观所更高,特别是在某些复杂的场景。这主要由于悲观锁在加锁的同时,也会把某些不会造成破坏的操作保护起来;而乐观锁的竞争则只发生在最小的并发冲突处,如果用悲观锁来理解,就是“锁的粒度最小”。但乐观锁的设计往往比较复杂,因此,复杂场景下还是多用悲观锁。
首先保证正确性,有必要的话,再去追求性能。
相关文章推荐
- hibernate学习笔记(七)-----悲观锁和乐观锁
- Hibernate视频学习笔记(11)悲观锁与乐观锁
- 乐观锁与悲观锁
- java中的乐观锁和悲观锁
- Oracle的悲观锁和乐观锁
- 详解 hibernate 悲观锁 乐观锁 深入分析 代码实例
- 乐观锁与悲观所
- hibernate 乐观锁与悲观锁使用
- Hibernate事务与并发问题处理(乐观锁与悲观锁)
- 讲述从事务隔离级别谈到Hibernate乐观锁,悲观锁
- 乐观锁与悲观锁及其实现
- Hibernate事务与并发问题处理(乐观锁与悲观锁)
- Hibernate事务与并发问题处理(乐观锁与悲观锁)
- 悲观锁和乐观锁
- 乐观锁与悲观锁
- 更新丢失_乐观锁_悲观锁
- 深入理解乐观锁与悲观锁
- 乐观锁与悲观锁——解决并发问题
- 一分钟教你知道乐观锁和悲观锁的区别
- 从事务隔离级别谈到Hibernate乐观锁,悲观锁