mysql意向锁

意向锁: 对表内现有锁的概括,可以看作一种状态信息,很有用但并不必要,用于优化性能。

意向锁特点: 均为表级(因为是信息概括),意向锁分为读意向锁和写意向锁,但意向锁之间不互斥。

场景1:(如果没有意向锁)

事务A: 对表的某一行加了行锁(互斥锁);
事务B: 希望对整表加锁,需要知道是否已经有表锁,并且需要知道表中任意一样是否有行锁(因为锁定范围有重合,而且是互斥锁),这个时候如果没有意向锁,事务B就只能扫全表了。

场景2:(引入意向锁后)

事务A: 先申请表的意向锁,然后申请行锁;
事务B:先申请表的意向锁(成功),然后申请表锁,这个时候由于上一步,立即能知道表中存在别的行锁,因此阻塞。

意向锁的兼容互斥关系:

推荐文章