一分钟教你知道乐观锁和悲观锁的区别

转载 2015年11月19日 10:59:19

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。


乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。


两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。

原文:http://blog.csdn.net/hongchangfirst/article/details/26004335

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst

相关文章推荐

一分钟教你知道乐观锁和悲观锁的区别

实际生产环境里边,如果并发量不大,完全可以使用悲观锁定的方法,这种方法使用起来非常方便和简单。 但是如果系统的并发非常大的话,悲观锁定会带来非常大的性能问题,所以就要选择乐观锁定的方法。   ...

一分钟教你知道乐观锁和悲观锁的区别

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据...
  • aoxida
  • aoxida
  • 2015年03月09日 10:44
  • 489

909422229__悲观锁与乐观锁的区别

前面为总结: 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁...

乐观锁和悲观锁的区别

最常用的处理多用户并发访问的方法是加锁。当一个用户锁住数据库中的某个对象时,其他用户就不能再访问该对象。加锁对并发访问的影响体现在锁的粒度上。比如,放在一个表上的锁限制对整个表的并发访问;放在数据页上...

数据库中乐观锁与悲观锁的区别

悲观锁   顾名思义就是采用一种悲观的态度来对待事务并发问题,我们认为系统中的并发更新会非常频繁,并且事务失败了以后重来的开销很大,这样以来,我们就需要采用真正意义上的锁来进行实现。悲观锁的基本思...
  • jkpi888
  • jkpi888
  • 2013年12月12日 23:07
  • 1306

909422229__Mysql与Oracle区别以及悲观锁与乐观锁机制

1.Mysql与Oracle的区别: 事务: oracle很早就完全支持事务。 mysql在innodb存储引擎的行级锁的情况下才支持事务,在安装Mysql的时候可以选择是否支持事务,可支持,可不支...

乐观锁和悲观锁的区别(最全面的分析)

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据...

悲观锁和乐观锁的区别

一、概念: 悲观所:顾名思义,所谓的悲观锁就是很悲观的意思。他对世界很悲观,每次去拿数据或者访问的时候都认为别人会改变这数据,于是它就给他锁住,这样别人想拿这个数据就会block直到释放锁。防止正在数...

乐观锁与悲观锁的区别

在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。 典型的冲突有: l 丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。...

悲观锁和乐观锁的区别

悲观锁(Pessimistic Lock)顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一分钟教你知道乐观锁和悲观锁的区别
举报原因:
原因补充:

(最多只允许输入30个字)