码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 记录锁,间隙锁,临键锁还在傻傻分不清楚?一招教你直达行级锁本质


    引入记录锁,间隙锁,临键锁的目的是为了干嘛?是为了解决幻读问题,也就是防止一个事务A在查询的时候,另一个事务B在它查询的区间内插入,删除,修改数据,导致事务A前后查询到的行数不一致(比如之前查到的是5行,现在查到了7行数据)。知道了这个最根本目的,就可以分析出到底锁的是哪个区间,而不用去记什么时候间隙锁,临键锁。

    比如:

    1.id是主键索引(主键索引是唯一索引),执行

    SELECT * FROM `test` WHERE `id`=1 FOR UPDATE;

    显然你只需要锁住id=1这一行记录即可,因为id这一列是主键索引,这样其它行的id是无法修改成id=1的,因此加的是行级锁

    2.

    id是主键索引,SELECT * FROM users WHERE id = 4 FOR UPDATE;由于没有这条数据,所以这样会加间隙锁,对(3,5)这个区间上锁(因为如果你不对这个区间加上间隙锁,那如果别的事务插入了一条id=4的记录,就会影响我们的查询结果(本来是0,插入了结果就是1了))因此加的是间隙锁

    3.

    age这一列只是普通索引,而不是唯一索引

    这张表B+树的叶子节点之间的关系如下:

     你要防止24这条记录以前的记录被修改成24,也要防止32这条记录被修改成24,也要其他事务先在(24,32)区间内插入一条数据,再将这条数据的age改成24,由于age是非唯一索引,所以可以出现多行的age都是24,因此需要锁住的区间是(10,32),这个可以拆分成(10,24]一个临键锁+(24,32)一个间隙锁

    总之,记住这些行锁的目的就是解决幻读问题,锁住区间,就可以依此判断出是对哪个区间进行加锁。而不用记什么到底是加记录锁还是临键锁还是间隙锁了。


     

     

  • 相关阅读:
    八大排序算法(含时间复杂度、空间复杂度、算法稳定性)
    科普读书会丨《被讨厌的勇气》:愤怒不是目的,是一种工具
    提升工作效率的一些网站、应用、插件和小技巧(二)
    节省时间,创造价值:人工智能在工作中的实际应用
    期货开户手续费加一分是主流
    基于SSM + MySQL的零食购物平台系统的设计与实现源码
    nginx重要配置参数
    从 几 个应用入手 了解为什么灵魂绑定代币将为 DeFi 带来大规模采用
    Hadoop生态圈中的Flume数据日志采集工具
    springboot(ssm学生作业管理系统 在线作业管理平台 Java(code&LW)
  • 原文地址:https://blog.csdn.net/weixin_47414034/article/details/134069620
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号