Oracle 悲观锁VS乐观锁
来源:未知 责任编辑:责任编辑 发表时间:2013-12-06 08:46 点击:次
Oracle 悲观锁 VS 乐观锁
悲观锁:悲观地认为从取出数据到提交修改的过程中,别的线程已经把该数据修改了,会引发更新丢失,所以需要在取数据的时候锁定该行。
select ... for update nowait;
update ...;
commit;
乐观锁:乐观地认为从取出数据到提交修改的过程中,别的线程不会修改这条数据,不需要在取出数据时就加锁。
需要做一些额外的处理,如多加一个字段(Number or Timestamp)
select ...;
update ... where number = old_number;
update ... where timestamp = old_timestamp;
根据返回影响的行数判断更新是否成功。
当用户数比较少,并发不高时,悲观锁优势明显,不需要一些额外的处理。但对于并发程度很高的应用,悲观锁会成为性能瓶颈,应使用乐观锁。
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>