意向锁 mysql_详解 MySql InnoDB 中意向锁的作用

意向锁是InnoDB存储引擎的表锁,用于支持行级锁与表级锁共存的多粒度锁定。IS和IX是两种意向锁,分别对应共享和排他锁的意向。它们互不冲突,但与行级的S锁和X锁互斥。意向锁提高了并发性,避免了事务在加表锁时逐行检查的开销,同时不影响多个事务对不同行加锁的并发操作。
摘要由CSDN通过智能技术生成

InnoDB 支持 多粒度锁(multiple granularity locking)

,它允许 行级锁

与 表级锁

共存,而 意向锁

就是其中的一种 表锁

意向锁(Intention Locks)

需要强调一下,意向锁是一种 不与行级锁冲突表级锁

,这一点非常重要。意向锁分为两种:

意向共享锁

(intention shared lock, IS):事务有意向对表中的某些行加 共享锁

(S锁)

-- 事务要获取某些行的 S 锁,必须先获得表的 IS 锁。

SELECT column FROM table ... LOCK IN SHARE MODE;

复制代码

意向排他锁

(intention exclusive lock, IX):事务有意向对表中的某些行加 排他锁

(X锁)

-- 事务要获取某些行的 X 锁,必须先获得表的 IX 锁。

SELECT column FROM table ... FOR UPDATE;

复制代码

即: 意向锁是有数据引擎自己维护的,用户无法手动操作意向锁

,在为数据行加共享 / 排他锁之前,InooDB 会先获取该数据行所在在数据表的对应意向锁。

意向锁要解决的问题

我们先来看一下百度百科上对意向锁存在意义的描述:

如果另一个任务试图在该表级别上应用共享或排它锁,则受到由第一个任务控制的表级别意向锁的阻塞。第二个任务在锁定该表前不必检查各个页或行锁,而只需检查表上的意向锁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值