1. MySQL InnoDB 表锁,IS、IX、S、X 模式与意向锁?
MySQL InnoDB 的表锁有哪些模式?IS、IX、S、X 与意向锁的作用与关系是什么?
- 表级锁的四种模式
- 意向锁的概念
- 表锁与行锁的协同
InnoDB 的表级锁包括四种模式:共享锁(S)、排他锁(X)、意向共享锁(IS)、意向排他锁(IX)。其中 S/X 是表级读写锁,IS/IX 是意向锁,它表示"该事务打算在表内加行级共享/排他锁"。意向锁本身不直接锁数据,而是用于表示加行锁的意图,使表锁与行锁能够兼容判断:例如事务要加表级 S 锁时,需检查是否已有事务持有 IX 锁(表示有行级排他锁),避免冲突。意向锁之间(IS/IX)相互兼容,S 与 X、S 与 IX、X 与其他都冲突。
意向锁是"表锁与行锁协同"的桥梁,它让数据库能快速判断"表级锁是否与已有的行级锁冲突",而无需逐行检查。理解意向锁协议是理解 InnoDB 表锁与行锁协同的基础。