数据库
首页 > 数据库> > 数据库中锁的划分

数据库中锁的划分

作者:互联网

按照锁粒度划分

行锁

锁定粒度小,锁冲突概率低,并发度高,开销大,加锁慢,容易死锁。

表锁

锁定粒度大,锁冲突概率高,并发度低,开销小,加锁快。

从数据库管理角度划分

共享锁

也叫读锁或S锁,共享锁锁定的资源可以被其他用户读取,但不能修改。

排它锁

也叫独占锁、写锁或X锁。排它锁锁定的数据只允许进行锁定操作的事务使用,其他事务无法对已锁定的数据进行查询或修改。

从程序员角度划分

乐观锁

不采用数据库自身的锁机制,而是通过程序来实现。

悲观锁

通过数据库自身的锁机制来实现,从而保证数据操作的排它性。

乐观锁和悲观锁的适用场景

乐观锁适合读操作多的场景,相对来说写的操作比较少。

悲观锁适合写操作多的场景,因为写的操作具有排它性。

避免死锁的发生的方法

  1. 如果事务涉及多个表,操作比较复杂,那么可以尽量一次锁定所有的资源,而不是逐步来获取,这样可以减少死锁发生的概率。

  2. 如果事务需要更新数据表中的大部分数据,数据表又比较大,这时可以采用锁升级的方式,比如将行级锁升级为表级锁,从而减少死锁产生的概率。

  3. 不同事务并发读写多张数据表,可以约定访问表的顺序,采用相同的顺序降低死锁发生的概率。

标签:中锁,数据库,死锁,数据表,划分,排它,操作,锁定
来源: https://www.cnblogs.com/yilin520/p/15489444.html