意向锁出现之前的情况
当一个事物想要修改表结构的时候,会先去遍历这张表的每一行数据有没有加锁。不仅要遍历,还要重试之后继续遍历等等,这就带来了性能问题。
所以意向锁就出现了,它的作用就是为了协调行锁和表锁的关系,支持锁的并行。
意向锁是一种不与行级锁冲突的表级锁。
有了意向锁,就表明了“这张表某个事务持有了锁”
意向锁分为两种:
意向共享锁:事务有意向对表中的某些行加共享锁
意向排他锁:事务有意向对表中的某些行加排他锁
意向锁是有存储引擎自己维护的,用户无法手动操作意向锁,在为数据行加共享/排他锁之前,InooDB会先获取该数据行所在数据表的对应意向锁