`
BruceGao
  • 浏览: 27319 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

乐观锁与悲观锁

 
阅读更多

      悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其它事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处理锁定状态。悲观锁的实现,往往使用数据库提供的锁机制(也只有数据库层提供的机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。

 

      相对悲观锁而言,乐观锁采取了更加宽松的加锁机制,悲观锁大多数情况下使用数据库提供的锁机制实现,以保证操作最程度的独占性,但随之而来的是数据性能的大量开销,特别是对长事务而言,这样的开销往往无法以承受。而乐观锁机制在一定程度上解决了这个问题。乐观锁,大多是基本数据库版本(Version)记录机制实现。何为数据版本,即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个字段(Version)来实现,读出数据时,将些版本号一同读出,之后更新时,对此版本号加1,此时将提交数据的版本数据与数据表对应记录的版本进行比较,如果提交的数据版本号大于数据库表的版本号,则予以更新,否则认为是过期数据。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics