秋招突击——MySQL补充——MySQL是如何加行级锁

引言

  • 在做一些SQL的过程中,总是对于行级锁会出现的一些理解上的问题,就找了一些资料,来补充一下,之前只不过是背过了,但是并不深刻理解。
  • 这里参考的都是小林coding的内容,链接
  • 这里是看了小林coding的内容,然后自己在进行二次消化总结,目录结构基本上是一致的。

这里先对行机锁的变化进行总结,方便尽心背诵

  • 当前读的几种加锁情况,宗旨,只要能避免幻读就行!
    • 唯一索引等值查询
      • 值不存在
        • 第一个大于参考值的记录的索引,退化为间隙锁(a,b),a<x<b
      • 值存在
        • 对应记录索引加记录锁
    • 唯一索引范围查询
      • 大于:num > x
        • x存在:a<x<b
          • x是对应记录的索引是间隙锁
          • b对应记录的索引是next-key锁,(x,b]
          • 最后一个特殊值对应的记录的索引是(b,+∞]
        • x不存在:a<(x)<b
          • b对应的是next-key锁,(a,b]
          • 最后一个特殊值对应的记录的索引是(b,+∞]
      • 大于等于 num >= x,需要考虑到记录锁
        • x存在:a<x<=b
          • x上记录锁
          • b上的是next-key锁:(x,b]
          • 最后一个特殊值对应的记录的索引是(b,+∞]
        • x不存在:a<b
          • b的是next-key锁,也就是(a,b]
          • 最后一个特殊值对应的记录的索引是(b,+∞]
      • 小于 num < x
        • x存在:a<x<b
          • x 是间隙锁,也就是(a,x)
          • a 是next-key锁,也就是(-∞,a]
        • x不存在 a < b
          • b加的是间隙锁(a,b)
          • a是next-key锁,也就是(-∞,a]
      • 小于等于 num <= x
        • x存在:a <= x < b
          • x是next-key锁,也就是(-∞,x]
          • a是next-key锁,也就是(-∞,a]
        • x不存在:a < b
          • b是间隙锁,也就是(a,b)
          • a是next-key锁,也就是(-∞,a]

正文

什么SQL语句会加行级锁

  • 普通的select语句不加行级锁,快照读,通过MVCC来实现的。

  • 两种类型的锁,分别是共享锁和独占锁

在这里插入图片描述

  • 共享锁S:满足读读共享,读写互斥。
  • 独占锁X:满足写写互斥,读写互斥。
查询操作增加对应的行级锁

查询加锁的方式有两种,枷锁的查询语句成为锁定读

S型锁

select 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值