今天被人问了下乐观锁和悲观锁,突然在脑子里好模糊,但又感觉以前很熟悉的东西竟然忘得这么干净。所以恶补加记录一下。
乐观锁和悲观锁是对于数据库并发情况下产生的两个对立的概念,所以首先确认一点 并发!并发!才存在这两个概念,他们是对并发数据库操作不同的处理方式。
乐观锁:乐观的认为不会发生并发冲突,依赖新增字段(version,你可以起一个其它的名字)来检验数据的合法,举例:查询数据 后,对version+1操作,然后修改记录 where 条件 version(当前)小于传递回来的值才修改,否则放弃修改。
悲观锁:悲观的认为所有的操作都会发生并发冲突,因此只能以阿里数据库自身的锁才能实现,对资源的强占有。举例:在对任意记录进行修改前,先尝试为该记录加上排他锁(exclusive locking)。
从上述简介:能看出,很明显的区别,可以根据自己的页面进行选择,但还有一点必须明白,悲观锁会导致性能大幅度下降。
qq技术交流群:208779755
个人公众号:海涛聊技术