悲观锁与乐观锁

来源:互联网 发布:php 输出执行时间 编辑:程序博客网 时间:2024/05/29 03:29

阿里面试遇到了这个问题,懵逼了,总结一下。

之前回忆了数据库系统中的锁机制,悲观锁与乐观锁其实是更高一级的锁概念,是存在于应用程序中的概念,要与底层数据库产品内部的锁机制区分。

乐观锁指的是在执行更新操作的时候,尽可能相信别人不在更新,于是更新的时候不需要加锁,在更新结束要提交的时候判断是否有别人也更新了。可以通过版本号来实现。可以在数据库中的表 加一列更新号字段,自增,每一次更新先获取一次更新号,然后执行更新,提交前再查看一次更新号,如果相同证明别人没有更新,直接更新,然后再把更新号加1,否则证明别人已经更新了,此时应该取消此次更新。


悲观锁则要求每一次更新都要先取得锁才能更新,更新结束后再释放锁。


乐观锁适用于只读操作多的系统,效率更高。而且不会产生死锁,没有加锁释放锁的开销。

原创粉丝点击