Mysql锁详解

行级锁和表级锁

  • 行级锁:开销大,锁的粒度小。 
  • 表级锁:开销小,锁的粒度大。

InnoDB同时支持行级锁和表级锁

共享锁(S)和排他锁(X) 

  • 共享锁:也称为读锁,允许多个事物读,但是不允许写 
  • 排他锁:也称为写锁,不允许读和写 

 

锁类型 共享锁 排他锁
共享锁 兼容 互斥
排他锁 互斥 互斥

 

意向共享锁(IS)和意向排他锁(IX)

  • 意向共享锁:事务在给数据行加行级共享锁之前,必须先取得该表的意向共享锁。
  • 意向排他锁:事务在给数据行加行级排他锁之前,必须先取得该表的意向排他锁。

主要作用:当表要变更结构时,要获取表的X锁,需要判断每行是否有排他锁,没有才能获取,效率比较低。于是引入了意向共享锁和意向排他锁。
表级排他锁和意向共享锁和意向排他锁是冲突的,这样就避免扫描每行数据

锁类型 共享锁 排他锁 意向共享锁 意向排他锁
共享锁 兼容 互斥 兼容 互斥
排他锁 互斥 互斥 互斥 互斥
意向共享锁 兼容 互斥 兼容 兼容
意向排他锁 互斥  互斥 兼容 兼容

 

posted @ 2026-01-25 23:41  一花一世界!  阅读(4)  评论(0)    收藏  举报