`
wwwxxx286
  • 浏览: 48869 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

悲观锁 VS 乐观锁

阅读更多
Oracle 悲观锁 VS 乐观锁
悲观锁:悲观地认为从取出数据到提交修改的过程中,别的线程已经把该数据修改了,会引发更新丢失,所以需要在取数据的时候锁定该行。
select ... for update nowait;
update ...;
commit;

乐观锁:乐观地认为从取出数据到提交修改的过程中,别的线程不会修改这条数据,不需要在取出数据时就加锁。
需要做一些额外的处理,如多加一个字段(Number or Timestamp)
select ...;
update ... where number = old_number;
update ... where timestamp = old_timestamp;
根据返回影响的行数判断更新是否成功。

当用户数比较少,并发不高时,悲观锁优势明显,不需要一些额外的处理。但对于并发程度很高的应用,悲观锁会成为性能瓶颈,应使用乐观锁。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics