码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL 必现之死锁


    场景1:

    版本:5.6.14

    隔离级别:READ-COMMITTED 

    复现步骤:

    分析:

    1. 由于数据库已经存在记录,所以事务 T1 执行 insert ignore into 会插入失败,并给该记录加了个 S 锁。
    2. 由于 S 锁是相互兼容的,所以事务 T2 也给该记录加了 S 锁。
    3. T1 继续执行 select for update 语句,尝试给数据加 X 锁,数据已经被 T2 加了 S 锁,此时 T1 等待 T2 释放 S 锁。
    4. T2 继续执行 select for update 语句,尝试给数据加 X 锁,此时 T2 等待 T1 释放 X 锁,但T1还未获得X,出现死锁!

    场景2:

    版本:5.7.34

    隔离级别:REPEATABLE-READ

    复现步骤:

    分析:

    1. 事务1插入成功但未提交,在记录上加间隙锁和插入意向锁。
    2. 事务2获得间隙锁,等待插入意向锁,被阻塞。
    3. 事务3获得间隙锁,等待插入意向锁,被阻塞。
    4. 事务1回滚,释放锁,使得事务2、3同时持有间隙锁,并等待插入意向锁,出现死锁!

    参考:Occurrence and handling of Mysql deadlock

  • 相关阅读:
    MySQL中的视图
    MyBatis-Plus分页插件和使用Mapper文件
    (Research)泛癌单细胞分析揭示肿瘤微环境中癌相关成纤维细胞的异质性和可塑性
    ssm项目运行后显示到登陆页面,账户密码登陆显示错误是什么问题,
    springboot基于微信小程序“智慧校园” 一体式的设计与实现毕业设计源码091634
    什么样的公司可以申请高新技术企业?
    odoo 开发入门教程系列-添加修饰
    QT发送Get请求并返回内容
    EasyRecovery数据恢复软件2024最新版包括Windows和Mac
    2022年武汉市省级省级“专精特新”小巨人企业申报条件+申报方式+佐证材料
  • 原文地址:https://blog.csdn.net/wzy0623/article/details/126077335
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号