数据库中锁的划分
作者:互联网
按照锁粒度划分
行锁
锁定粒度小,锁冲突概率低,并发度高,开销大,加锁慢,容易死锁。
表锁
锁定粒度大,锁冲突概率高,并发度低,开销小,加锁快。
从数据库管理角度划分
共享锁
也叫读锁或S锁,共享锁锁定的资源可以被其他用户读取,但不能修改。
排它锁
也叫独占锁、写锁或X锁。排它锁锁定的数据只允许进行锁定操作的事务使用,其他事务无法对已锁定的数据进行查询或修改。
从程序员角度划分
乐观锁
不采用数据库自身的锁机制,而是通过程序来实现。
悲观锁
通过数据库自身的锁机制来实现,从而保证数据操作的排它性。
乐观锁和悲观锁的适用场景
乐观锁适合读操作多的场景,相对来说写的操作比较少。
悲观锁适合写操作多的场景,因为写的操作具有排它性。
避免死锁的发生的方法
-
如果事务涉及多个表,操作比较复杂,那么可以尽量一次锁定所有的资源,而不是逐步来获取,这样可以减少死锁发生的概率。
-
如果事务需要更新数据表中的大部分数据,数据表又比较大,这时可以采用锁升级的方式,比如将行级锁升级为表级锁,从而减少死锁产生的概率。
-
不同事务并发读写多张数据表,可以约定访问表的顺序,采用相同的顺序降低死锁发生的概率。
标签:中锁,数据库,死锁,数据表,划分,排它,操作,锁定 来源: https://www.cnblogs.com/yilin520/p/15489444.html