[笔记]MySQL 插入导致死锁

article/2025/6/26 12:23:31

线上遇到的 MySQL 插入导致死锁,问题排查.

场景复现

MySQL 版本: 5.7.36
数据库存储引擎: InnoDB
事务隔离级别: REPEATABLE-READ

1. 创建测试表

DROP TABLE IF EXISTS `tb_task`;
CREATE TABLE `tb_task` (`id` int(11) NOT NULL AUTO_INCREMENT,`task_id` int(11),`order_id` int(11),`tx` varchar(8),PRIMARY KEY (`id`),UNIQUE KEY `uk_taskid_orderid` (`task_id`,`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. 分别创建两个SQL会话,并开启事务

在这里插入图片描述

  1. 在事务1 中执行插入语句1INSERT tb_task(task_id,order_id,tx)values(1,123,'tx_1');
  2. 在事务2 中执行插入语句2INSERT tb_task(task_id,order_id,tx)values(1,213,'tx_2');
  3. 在事务1 中执行插入语句2INSERT tb_task(task_id,order_id,tx)values(1,213,'tx_1');
  4. 在事务2 中执行插入语句1INSERT tb_task(task_id,order_id,tx)values(1,123,'tx_2');
    在这里插入图片描述

在执行完上面的步骤后,可以看到事务2由于发生了死锁异常而导致事务被回滚,而事务1 的插入语句1的SQL执行成功.

在执行插入语句的过程中你可能已经注意到在执行第3步插入SQL时事务1并没有立即返回而是发生了阻塞,在事务2由于死锁导致报错回滚后事务1才执行了返回。

其实我们可以根据阻塞进行推测是由于在执行第3步插入操作时事务1尝试获取由事务2持有的锁,而事务2还没有结束导致的阻塞,而事务2在尝试插入事务1已经插入的SQL时系统检测到事务1和事务2可能会出现互相持有锁的情况而发生死锁从而抛出死锁异常并回滚事务2,此时由于事务2被回滚,其持有的锁被释放,因此事务1顺利获取到了锁从阻塞状态返回。

我们此时提交事务1并查看表中数据,可以看到表中存在两条由事务1提交的数据。
在这里插入图片描述
我们可以使用SQL命令SHOW ENGINE InnoDB STATUS\G查看最近一次死锁产生的原因:
在这里插入图片描述
更详细的原因分析看参考资料吧,这里就不重复赘述了。

参考资料

MySQL:insert 加锁与死锁分析
mysql insert锁机制(博客园)
mysql insert锁机制(CSDN)


http://chatgpt.dhexx.cn/article/DI0DFeJB.shtml

相关文章

mysql插入数据中文_mysql插入中文数据的方法

mysql插入中文数据的方法 发布时间:2020-09-04 09:26:29 来源:亿速云 阅读:92 作者:小新 小编给大家分享一下mysql插入中文数据的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下&#xf…

python操作mysql插入数据

python操作mysql插入数据 首先安装pymysql这个库pycharm连接数据库操作mysql语句连接数据库插入数据 由于有时候,数据存在excel表格中,需要借助python去读取数据然后再插入到数据库中 首先安装pymysql这个库 pycharm连接数据库 这一步可要可不要&#…

python+mysql插入数据

mysql数据处理之插入数据 目的 实现数据插入到mysql,比如我们需要插入1w数据到数据,可以通过这种方式插入,或者也可以将python 自动化的数据,报存到数据库中。 1、连接数据库 import pymysql import os import time class dat…

MySQL插入汉字报错的解决方案

MySQL插入汉字报错的原因是字符集的问题,MySQL默认使用的是Latin(拉丁文)字符集,可以在创建数据库时指定其字符集:CREATE DATABASE test DEFAULT CHARACTER SET utf8 或者修改MySQL的配置文件,可以参考以下…

公众号涨粉神器“易拉宝”上线啦!快速增加精准粉丝

涨粉、涨粉、涨粉! 这从来都是公众号运营一个老大难的问题。 相信有很多小主们都在运营公众号,每天为了少得可怜的新增粉丝而发愁。没办法,流量入口都被大号占据了,当然很难获得粉丝。 我们经常能在朋友圈、微信群里看到“粉丝…

50行代码实现的艺术签名设计微信小程序,轻松对接公众号,涨粉神器,学习赚钱两不误.微信公众号引流工具.html,python学习小项目.艺术签名设计微信小程序,前端学习小项目有趣的项目

50行代码实现的艺术签名设计微信小程序,轻松对接公众号,涨粉神器,学习赚钱两不误 先看效果 这个小程序实现艺术签名设计的功能 对接到公众号之后,相当于给你的公众号添加了一个功能,别人关注公众号后,可以从自定义菜单中设计艺术签名 (我一个搞后台开发的,布局确实做得很low,…

前端工程师的一大神器——puppeteer

大家好,我是若川。欢迎加我微信 ruochuan12,长期交流学习。今天推荐神器puppeteer,我猜有挺多人不知道。文章不长,看完有空也可以试玩。 我18年也写过一篇puppeteer爬取生成pdf的文章,时间真快。前端使用puppeteer 爬虫…

自制炒股盯盘神器——python实现GUI版本

有公众号粉丝在后台反馈:问能不能做一个可以在Windows环境下运行的GUI窗口,用来完成盯盘的功能。经过这几天的调试,现在这个小工具的基本功能已经初步调试完毕。下面就来看看它长什么样子吧: 主界面 主界面比较简单,只…

二十一个微信公众号推广技巧

微信营销说起来门槛很低,人人都可以做,门槛又很高,做到很好,需要很多的资源和投入,不说别的,要推广公众号,发展用户就是挑战,例如微信认证需要500用户是个门槛。也许你会抱怨为什么&…

gitbook 入门教程之还在搞公众号互推涨粉?gitbook 集成导流工具,轻轻松松躺增粉丝!...

相信大多数博客作者都或多或少有过这样想法: 现在各种平台这么多,想要实现全平台发布就要到处复制粘贴,等我有空一定做统一平台一次性全部解决! 不知道正在阅读文章的你,有没有这样的想法? 反正我确实这么想过,甚至 github 上相关项目早已创建,可一直迟迟没有下一步,要么是工作…

相见恨晚的IDEA热部署神器 JRebel

点击蓝色“java大数据修炼之道”关注我哟加个“星标”,每晚21:00,一起学技术来源: github.com/judasn/IntelliJ-IDEA-Tutorial/blob/master/jrebel-setup.md 作者: duanluanPart1JRebel 介绍 在 Java Web 开发中, 一般更新了 Java 文件后要手…

这5个摸鱼神器太火了!程序员:知道了快删!

这届打工人最喜欢的两个词 除了下班,就是摸鱼 鲁迅曾说过:要想成为一名合格的打工人 摸鱼是必备技能之一 △ 图源网络,如侵删 适(放)当(空)摸(自)鱼(己&#…

gitbook 入门教程之还在搞公众号互推涨粉?gitbook 集成导流工具,轻轻松松躺增粉丝!

相信大多数博客作者都或多或少有过这样想法: 现在各种平台这么多,想要实现全平台发布就要到处复制粘贴,等我有空一定做统一平台一次性全部解决! 不知道正在阅读文章的你,有没有这样的想法? 反正我确实这么想过,甚至 github 上相关项目早已创建,可一直迟迟没有下一步,要么是工…

单条视频播放超6000万,涨粉24万,撒狗粮也能轻松上热门?

在如今这个CP满天飞的时代,“无CP,无流量”似乎已成为金科玉律,不少沙雕网友常调侃:我可以单身,但我的CP一定要结婚。 在这样的粉丝经济背景下,也催生出了不少情侣KOL,他们都曾凭借在短视频中的…

卧槽,又一款Python神器

写Python代码最头疼的两件事是什么?我总结了两点 1、Windows 平台安装第三方包经常失败的问题,还记得第一次安装mysql依赖包时的那个场景吗?怎么都装不上。 2、虚拟环境切换的问题,如果我们同时在一台电脑上开发多个项目&#xff…

教培企业如何引流增粉?

教育培训行业,经过2020年疫情的影响,开始与互联网加速融合,以在线教育这个模式迅速出圈。 在线教育,可以突破时间和地域的限制,将优质的教育资源通过互联网和线上工具,触达更多区域更大范围的用户&#xf…

神器DeskGo!

本文,给大家带来一款超级良心的桌面整理工具,文末有下载方式! 使用电脑过程中,一直都存在一个令人矛盾的问题--文件是否放在桌面。 对于我来说,喜欢把各种各样的东西放在桌面,这对于使用过程中寻找文件带来…

月均200wUP主活跃的B站涨粉密码是什么?

本篇关键词:B站、UP主、涨粉、内容创作 B站是Z世代高度聚集的文化社区和视频平台。越来越多UP主加入构建出一个源源不断产出浓厚Z世代气息的多元文化社区。月均活跃UP主数量达200万的B站,UP主们如何实现粉丝的长效增长? 风格创作的魔力 B站…

ICCV2021涨点神器:新方式在视觉类领域提升精度(附源代码)

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 基于非局部的块设计用于捕获计算机视觉任务中的远程时空依赖性。尽管表现出出色的性能,…

自媒体如何涨粉?这4个技巧

自媒体怎么引流?这4个技巧,0基础也能操作。经常会有很多朋友跟我吐槽,为什么自己明明花了很多心思做自媒体,但流量就是提不上来?其实,自媒体的引流的思路非常简单:内容 平台!文章引流…