前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁 主要内容含:
对于行级锁,主要分为以下三类:
表达:行锁=临键锁-见隙锁
表达:GAP
表达:S
InnoDB实现了以下两种类型的行锁:
默认情况下,InnODB在 REPEATABLE READ事务隔离级别运行,InnoDB使用 临键锁 进行搜索和索引扫描,以防止幻读。(本次演示)
可以通过以下SOL,查看意向锁及行锁的加锁情况:
select object schema,object name,index name,lock type,lock mode,lock data from performance schema.data locks;
演示:
select object schema,object name,index name,lock type,lock mode,lock data from performance schema.data locks;
不通过索引条件检索数据(InnoDB的行锁是针对于索引加的锁),那么InnoDB将对表中的所有记录加锁,此时 就会升级为表锁 演示:
下面进行演示:
默认情况下,InnODB在 REPEATABLE READ事务隔离级别运行,InnoDB使用 next-key锁进行搜索和索引扫描,以防止幻读。
select object schema,object name,index name,lock type,lock mode,lock data from performance schema.data locks;
select object schema,object name,index name,lock type,lock mode,lock data from performance schema.data locks;
我们可以看看下面这个例子:
select object schema,object name,index name,lock type,lock mode,lock data from performance schema.data locks;
对于表级锁,主要分为以下三类:
对于表锁,分为两类:
语法:
locktables 表名..read/write
unlock tables/客户端断开连接
演示:
【2】元数据锁:MDL
不同SQL对应的元数据锁有所不同:
意向锁出现的场景:
意向锁加入以后的情况:
查看查看意向锁及行锁的加锁情况:
select object schema,object name,index name,lock type,lock mode,lock data from performance schema.data locks;
演示: - 注:TABLE 为表锁 RECORD为行锁