一、意向锁是什么?
意向锁有意向排他锁和意向共享锁。
在粒度上属于表锁,可以与行锁共存。
二、怎么添加意向锁?
意向锁无需手动添加,在添加行锁前,会该行所在的表添加对应的意向锁。
三、意向锁的作用是什么?
意向锁是表级别的锁,用来标识该表上有数据被锁住或即将被锁,对于表级别的请求(LOCK TABLE…),就可以直接判断是否有锁冲突,不需要逐行检查锁的状态。
简单来说就是,对于加表级锁时的速度进行优化——
我们可以把意向锁理解为一种标识,表示这个表中的某行存在排他锁或共享锁。
A表中的某行存在排他锁时,A表则有意向排他锁;共享锁同理。
在其他事务想要获得A表级的排他锁时,会先去检测A表的意向排他锁,存在则阻塞。
因为A表有意向排他锁这个标识的存在,避免了寻找A表中行级排他锁的行为,节约了资源。
四、意向锁的兼容互斥性
理解意向锁的作用之后,对于兼容互斥性的问题理解起来会非常简单。
在共享锁和排他锁的兼容互斥规则上,延展开来——
1、A表存在意向排他锁,
无加表级排他锁,可以加行级排他锁。
无法加表级共享锁,可以加行级共享锁。
2、A表存在意向共享锁,
可以加表级共享锁,可以加行级共享锁。
无法加表级排他锁,可以加行级排他锁。