以下内容主要参考Mysql官方文档整理
MySQL server的锁主要是全局锁,行锁和表锁,通过存储引擎则可以实现不同的锁机制
MyISAM只支持到表级锁,因为MyISAM的索引与数据是分离的,其索引存储的是数据的物理地址,通过索引无法找到数据,就只能把整个表锁起来
innoDB的锁模型:
-
行级别的共享(s)与独占锁(x):s锁之间不互斥,s锁与x锁互斥,x锁之间互斥
-
意向锁:分为意向共享锁(IS)和意向独占锁(IX),表级锁。在事务获取表中的s锁之前需要先获得IS锁或者更强级别的锁;在事务获取表中的x锁之前需要先获得IX锁,参考。表级锁的互斥关系如下: