《企业应用架构模式》(POEAA)读书笔记 (4)-- 离线并发模式

   并发管理的正确目标是尽量增加对数据的正确访问,同时减少冲突
  离线并发模式有两种:使用乐观离线锁、使用悲观离线锁

  离线锁可以理解为一种非服务器管理的锁,或者说是自管理的锁,应用在适当的地方注册锁,获取数据,然后离线,并对数据进行离线的操作;其他的应用通过检测已经注册的锁来决定是否进行并发操作

1. 悲观离线锁


   悲观离线锁假设会话冲突的可能性很大,从而对系统的并发进性进行限制
   在对不一致读的要求不高时,第一选择是使用独占写锁(不可以再添加任何读锁,当然写锁也不能);如必须读出最新数据,而不在乎是否要修改,则应使用独占读锁(不可以再添加任何写锁,但读锁是允许的)。结合以上两种,提供互斥读锁的限制,又有互斥写锁的并发性的锁称为 读/写锁---读/写锁互斥不能同时加,但并发的读锁是允许的
   构建悲观离线锁的步骤:决定使用哪种锁>>构建一个锁管理对象>>定义业务事务使用锁的过程
   让锁管理对象在锁不可用时抛出异常而不是等待锁释放,可以免除死锁
   悲观离线锁作为乐观离线锁的补充,只在真正需要的时候才应该使用 


2. 乐观离线锁

   乐观离线锁假设会话冲突的可能性很小,从而使得多用户对一份数据进行处理成为可能
  通过冲突检测和事务会滚来防止并发事务中的冲突
  本质就是通过将会话中的版本号与当前记录数据的版本号相比较,事务成功提交以后版本号增加;或者在更新的SQL语句中包含对所有字段的检查,可以不需要为数据库增加版本字段,但可能导致性能损失
  乐观离线锁必须自定检查以防止不一致读
  一个高效的合并策略能使乐观离线锁变得非常强大,当冲突发生时,合并策略可以合并更改并重新提交


 

posted @ 2005-12-16 23:27  quitgame  阅读(1457)  评论(0编辑  收藏  举报