# 概述


# 全局锁





# 表级锁

表锁

元数据锁

假如有客户端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就不会被阻塞住了
 
 
 -  
    
 
意向锁




# 行级锁







演示第一种情况


# 总结

# 面试题
# MySQL Update是行锁还是表锁?


















