# 概述
# 全局锁
# 表级锁
表锁
元数据锁
假如有客户端1、客户端2,
- 客户端1,执行begin命令开启了事务
-
- 客户端1没有执行读写语句,这时,客户端执行查看元数据锁的命令,查看到没有加到元数据锁
- 当客户端1执行select读操作时,
-
-
- 这时,客户端2,执行查看元数据锁的命令,查看到有一个元数据锁(锁类型:SHARED_READ)
- 这时,客户端2,执行alter table对表进行变更操作,会被阻塞住(因为执行alter table所对应的EXCLUSIVE锁类型会与其它的MDL(SHARED_READ、SHARED_WRITE)都互斥)
- 客户端2,执行读、写操作时,都可以成功,因为SHARED_READ、SHARED_WRITE之间是兼容的
-
-
- 客户端1,执行 commit 提交事务时
-
-
- 这时,客户端2执行的alter就不会被阻塞住了
-
意向锁
# 行级锁
演示第一种情况