本文主要是介绍乐观锁和悲观锁——独占锁和共享锁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
乐观锁和悲观锁:数据库的锁机制
在数据库管理系统中的并发控制是为了确保多个事务之间同时读取数据库中同一个数据时,不破坏事务的隔离性和统一性以及数据库的统一性。实现并发控制的手段大致可以分为乐观并发控制和悲观并发控制。
- 悲观锁:每次去拿数据的时候,都默认别人会修改这个数据,所以都会上锁,这样就会阻止其他人修改该数据,直至锁被释放。
- 乐观锁:每次去拿数据的时候,都默认别人不会修改这个数据,所以不会上锁,但是在提交更新的时候,回去判断一下在此期间有没有人去更新这个数据。
数据库中的行锁,表锁,读锁,写锁以及synchronized实现的锁均为悲观锁。
数据库的乐观锁需要自己实现,在表中添加一个version字段,每次修改成功值加1,每次提交更新的时候会先去对比一下自己拥有的version和数据库的version是否一致。
独占锁和共享锁:Zookeeper提供的分布式锁
- 独占锁:一次只能有一个线程实用资源。
- 共享锁:读锁是共享,写锁是互斥的,支持多个线程同时读取同一个资源,写锁则互斥。
这篇关于乐观锁和悲观锁——独占锁和共享锁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!