数据库中锁的划分
2021/10/31 19:10:44
本文主要是介绍数据库中锁的划分,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
按照锁粒度划分
行锁
锁定粒度小,锁冲突概率低,并发度高,开销大,加锁慢,容易死锁。
表锁
锁定粒度大,锁冲突概率高,并发度低,开销小,加锁快。
从数据库管理角度划分
共享锁
也叫读锁或S锁,共享锁锁定的资源可以被其他用户读取,但不能修改。
排它锁
也叫独占锁、写锁或X锁。排它锁锁定的数据只允许进行锁定操作的事务使用,其他事务无法对已锁定的数据进行查询或修改。
从程序员角度划分
乐观锁
不采用数据库自身的锁机制,而是通过程序来实现。
悲观锁
通过数据库自身的锁机制来实现,从而保证数据操作的排它性。
乐观锁和悲观锁的适用场景
乐观锁适合读操作多的场景,相对来说写的操作比较少。
悲观锁适合写操作多的场景,因为写的操作具有排它性。
避免死锁的发生的方法
-
如果事务涉及多个表,操作比较复杂,那么可以尽量一次锁定所有的资源,而不是逐步来获取,这样可以减少死锁发生的概率。
-
如果事务需要更新数据表中的大部分数据,数据表又比较大,这时可以采用锁升级的方式,比如将行级锁升级为表级锁,从而减少死锁产生的概率。
-
不同事务并发读写多张数据表,可以约定访问表的顺序,采用相同的顺序降低死锁发生的概率。
这篇关于数据库中锁的划分的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南