MySQL-锁
21.InnoDB有哪几类行锁?
InnoDB中主要有三种行锁,分别是记录锁
、间隙锁
和临键锁
。
- 记录锁就是锁定某一行数据,也就是记录本身。
- 间隙锁是锁定一个范围的数据,不包括记录本身,防止插入新记录。
- 临键锁是记录锁和间隙锁的结合,不仅锁住记录本身还可以避免插入新记录。可重复读隔离级别默认采用临键锁,如果操作的索引是主键或唯一索引,那么就会降级为记录锁。
22.意向锁是什么?
意向锁是一种表级锁
,用于协调表锁和行锁之间的关系。在事务加了行锁的情况下,判断是否还需要加表锁。意向锁是由数据引擎自己维护的,用户无法手动操作。
23.当前读和快照读的区别是什么?
当前读是一致性锁定读
,给记录加锁,一致性要求强。快照读是读取快照信息,在读已提交的情况下读取的是最新的快照信息,在可重读读的情况下读取的是事务开始时的快照信息。