Mysql中的锁
1. 2 MySQL InnoDB 锁的基本类型 https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html 官网把锁分成了 8 类。所以我们把前面的两个行级别的锁(Shared and Exclusive Locks),和两个表级别的锁(Intention Locks)称为锁的基本模式。 后面三个 Record Locks、Gap Locks、Next-Key Locks,我们把它们叫做锁的算法, 也就是分别在什么情况下锁定什么范围。 2.1 锁的粒度 我们讲到 InnoDB 里面既有行级别的锁,又有表级别的锁,我们先来分析一下这两 种锁定粒度的一些差异。 表锁,顾名思义,是锁住一张表;行锁就是锁住表里面的一行数据。锁定粒度,表 锁肯定是大于行锁的。 那么加锁效率,表锁应该是大于行锁还是小于行锁呢?大于。为什么?表锁只需要 直接锁住这张表就行了,而行锁,还需要在表里面去检索这一行数据,所以表锁的加锁 效率更高。 第二个冲突的概率?表锁的冲突概率比行锁大,还是小? 大于,因为当我们锁住一张表的时候,其他任何一个事务都不能操作这张表。但是 我们锁住了表里面的一行数据的时候,其他的事务还可以来操作表里面的其他没有被锁 定的行,所以表锁的冲突概率更大。 表锁的冲突概率更大,所以并发性能更低,这里并发性能就是小于。 nnoDB