Mysql 死锁案例1-记录锁读写冲突

死锁复现 

CREATE TABLE `t` (`id` int(11) NOT NULL,`c` int(11) DEFAULT NULL,`d` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `c` (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `t` */insert  into `t`(`id`,`c`,`d`) values (0,0,0),(5,5,5),(10,10,10)
事务1事务2
T1

START TRANSACTION ;

SELECT * FROM t WHERE id =5 LOCK IN SHARE MODE

T2

START TRANSACTION ;

SELECT * FROM t WHERE id =5 LOCK IN SHARE MODE

T3SELECT * FROM t WHERE id =5 FOR UPDATE (阻塞)
T4SELECT * FROM t WHERE id =5 FOR UPDATE (死锁)

死锁分析

  1. T1事务1加id=5主键索引读锁成功
  2. T2事务2加id=5主键索引读锁成功
  3. T3事务1加id=5主键索引写锁阻塞
  4. T3事务2加id=5主键索引写锁阻塞,进入循环等待,死锁

SHOW ENGINE INNODB STATUS 查看加锁信息

------------------------
LATEST DETECTED DEADLOCK
------------------------
2024-03-10 15:49:31 0x10bc
*** (1) TRANSACTION:
TRANSACTION 486540, ACTIVE 21 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 4 lock struct(s), heap size 1136, 2 row lock(s)
MySQL thread id 4, OS thread handle 7296, query id 2804 localhost ::1 root statistics
SELECT * FROM t WHERE id =5 for update
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 638 page no 3 n bits 80 index PRIMARY of table `test`.`t` trx id 486540 lock_mode X locks rec but not gap waiting
Record lock, heap no 3 PHYSICAL RECORD: n_fields 5; compact format; info bits 00: len 4; hex 80000005; asc     ;;1: len 6; hex 000000046952; asc     iR;;2: len 7; hex 4b0000019207d7; asc K      ;;3: len 4; hex 80000005; asc     ;;4: len 4; hex 80000005; asc     ;;*** (2) TRANSACTION:
TRANSACTION 486541, ACTIVE 14 sec starting index read
mysql tables in use 1, locked 1
4 lock struct(s), heap size 1136, 2 row lock(s)
MySQL thread id 5, OS thread handle 4284, query id 2809 localhost ::1 root statistics
SELECT * FROM t WHERE id =5 FOR UPDATE
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 638 page no 3 n bits 80 index PRIMARY of table `test`.`t` trx id 486541 lock mode S locks rec but not gap
Record lock, heap no 3 PHYSICAL RECORD: n_fields 5; compact format; info bits 00: len 4; hex 80000005; asc     ;;1: len 6; hex 000000046952; asc     iR;;2: len 7; hex 4b0000019207d7; asc K      ;;3: len 4; hex 80000005; asc     ;;4: len 4; hex 80000005; asc     ;;*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 638 page no 3 n bits 80 index PRIMARY of table `test`.`t` trx id 486541 lock_mode X locks rec but not gap waiting
Record lock, heap no 3 PHYSICAL RECORD: n_fields 5; compact format; info bits 00: len 4; hex 80000005; asc     ;;1: len 6; hex 000000046952; asc     iR;;2: len 7; hex 4b0000019207d7; asc K      ;;3: len 4; hex 80000005; asc     ;;4: len 4; hex 80000005; asc     ;;*** WE ROLL BACK TRANSACTION (2)
------------
TRANSACTIONS
------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537974.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Material UI 5 学习03-Text Field文本输入框

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Text Field文本输入框 一、最基本的本文输入框1、基础示例2、一些表单属性3、验证 二、多行文本 一、最基本的本文输入框 1、基础示例 import {Box, TextField} from "…

0301taildir-source报错-flume-大数据

1 基础环境简介 linux系统:centos,前置安装:jdk、hadoop、zookeeper、kafka,版本如下 软件版本描述centos7linux系统发行版jdk1.8java开发工具集hadoop2.10.0大数据生态基础组件zookeeper3.5.7分布式应用程序协调服务kafka3.0分…

【深入理解设计模式】命令设计模式

命令设计模式: 命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为一个对象,从而使你可以用不同的请求对客户端进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 概述…

YOLOv9实例分割教程|(一)训练教程

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、创建数据集及数据配置文件 创新一个文件夹存放分割数据集,包含一个images和labels文件夹。标签格式如下所示: 创新数据集…

可视化Relay IR

目标 为Relay IR生成图片形式的计算图。 实现方式 使用RelayVisualizer可视化Relay,RelayVisualizer定义了一组接口(包括渲染器、解析器)将IRModule可视化为节点和边,并且提供了默认解析器和渲染器。 首先需要安装依赖&#x…

基于PHP的数字化档案管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的数字化档案管理系统 一 介绍 此数字化档案管理系统基于原生PHP,MVC架构开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 php(mvc)mysqlbootstrapphpstudyvscode 二 功能 …

Js输入输出语句

输入语法 prompt("您想输入的是&#xff1f;")输出语法: 语法1: document.write(‘要出的内容’&#xff09; <body><script>document.write("你好")document.write("<h1>我是<h1>")</script> </body>作…

武汉星起航:秉承客户至上服务理念,为创业者打造坚实后盾

在跨境电商的激荡浪潮中&#xff0c;武汉星起航电子商务有限公司一直秉持着以客户为中心的发展理念&#xff0c;为跨境创业者提供了独特的支持和经验积累&#xff0c;公司通过多年的探索和实践&#xff0c;成功塑造了一个以卖家需求为导向的服务平台&#xff0c;为每一位创业者…

MongoDB从0到1:高效数据使用方法

MongoDB&#xff0c;作为一种流行的NoSQL数据库。从基础的文档存储到复杂的聚合查询&#xff0c;从索引优化到数据安全都有其独特之处。文末附MongoDB常用命令大全。 目录 1. 引言 MongoDB简介 MongoDB的优势和应用场景 2. 基础篇 安装和配置MongoDB MongoDB基本概念 使…

Android 学习之追踪应用的安装情况

先上结论&#xff0c;急用的话直接看结论 结论一、借助 API 读取安装信息&#xff0c;然后上报二、借助手动埋点&#xff0c;然后上报三、对比 前提过程 结论 一、借助 API 读取安装信息&#xff0c;然后上报 通过 PackageManager 的 API&#xff0c;我们可以得知自身应用安装…

Devin内测注册全攻略:一文带你快速体验最新AI软件工程师技术 ️

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

力扣刷题Days18-190颠倒二进制位(js)

目录 1&#xff0c;题目 2&#xff0c;代码 1&#xff0c;逐位颠倒 800001011 循环过程&#xff1a; 最终结果&#xff1a; 3&#xff0c;学习与总结 1&#xff0c;<< 位运算符 1&#xff0c;题目 颠倒给定的 32 位无符号整数的二进制位。 2&#xff0c;代码 1…