Mysql共享锁, 排他锁和意向锁的简单总结

11 篇文章 0 订阅
6 篇文章 0 订阅

共享锁(Share Lock)

  1. 共享锁又称读锁, 缩写(S)锁. 共享锁可以重复加, 但与排他锁(X)是有冲突的, 也就是只读
  2. 使用语法: SELECT … LOCK IN SHARE MODE;

排他锁(Exclusive Lock)

  1. 排他锁又称写锁, 缩写(X)锁. 排他锁加了, 不允许加其它任何锁
  2. 使用语法: SELECT … FOR UPDATE;

意向锁(Intent Lock)

  • 意向锁是表级锁, 在事务中, 用户申请加行锁时, 数据库会默认先申请意向锁, 也就是数据库自动处理意向锁的.

InnoDB的两种表意向锁

  1. 意向共享锁(Intent Share Lock), 缩写(IS)锁
  2. 意向排他锁(Intent Exclusive Lock), 缩写(IX)锁

加锁过程说明

  1. 未加意向锁时: 某 A用户事务中加了行锁, 之后某 B用户申请加表锁, 此时 B用户的请求在数据库内处理冲突的步骤, 首先判断是否已被其它事务加了表锁, 再判断表中是否有个行已被加了行锁, 遍历整张表
  2. 有意向锁时: A用户事务中申请意向共享锁, 成功后再申请行锁, 之后 B用户申请加表锁, 此时 B用户的请求在数据库内处理冲突的步骤, 首先判断是否已被其它事务加了表锁, 然后会发现已有意向共享锁锁住了某个行, B进入阻塞, 直到 A释放指定行锁
  • 能看出未加意向锁时, 可能会有整表遍历, 导致加锁的性能损失会很严重

各锁之间兼容详情表

-SXISIX
S兼容冲突兼容冲突
X冲突冲突冲突冲突
IS兼容冲突兼容兼容
IX冲突冲突兼容兼容

如果您觉得有帮助,欢迎点赞哦 ~ 谢谢!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值