个人对MySQL的意向锁的理解

  1. 读写锁
    ·排他锁,X
    ·共享锁,S
  2. 意向锁
    ·意向排他锁,IX
    ·意向共享锁,IS

本文想记录一下自己对意向锁的机制的理解。

因为X锁和S锁既可以是行级锁也可以是表级锁,

假设在没有使用意向锁的时候,那么情景是这样的,

事物T想给数据库表tableA加表级X锁,因为X锁和X锁不兼容,

先要检查数据库表tableA目前有没有被加X锁(行级X锁或者表级X锁),

如果是tableA被加了表级X锁还好,但如果是加了行级X锁,

假设我们的tableA某一行加了行级锁,

那么当前事务T就需要逐行去查验有没有被加锁,

才能判断自己的表级X锁能否加成功,过程非常耗时。

这时引入IX锁的概念(以IX锁为例)。先来看一下意向锁的说明。

IX/IS 都是表级锁,用来表示一个事务想要在表中加X锁或S锁,有以下两个规定:
·一个事务在获得某个数据行对象的S锁之前,必须先获得表的IS锁或者更强的锁;
·一个事务在获得某个数据行对象的X锁之前,必须先获得表的IX锁。

通过引入意向锁,tableA如果被加了行级X锁或者表级X锁都会先加上IX锁。

X锁和IX锁是不兼容的,此时事务T加X锁,就会直接报出失败,

不需要逐行查验是否有行级X锁。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值