【MySQL】死锁案例之三
短信预约 -IT技能 免费直播动态提醒
一 前言
死锁,其实是一个很有意思,也很有挑战的技术问题,大概每个DBA和部分开发朋友都会在工作过程中遇见过。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮助。
二 背景知识
2.1 insert 锁机制
在分析死锁案例之前,我们先学习一下背景知识 insert 语句的加锁策略。我们先来看看官方定义:
3.3 死锁日志
死锁,其实是一个很有意思,也很有挑战的技术问题,大概每个DBA和部分开发朋友都会在工作过程中遇见过。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮助。
二 背景知识
2.1 insert 锁机制
在分析死锁案例之前,我们先学习一下背景知识 insert 语句的加锁策略。我们先来看看官方定义:
sess1
sess2
begin;
delete from t8 where b = 1;
begin;
insert into t8 values (NULL,1);
commit;
update t8 set
T2
begin;
begin;
insert into t7(id,a) values(26,10);
insert into t7(id,a) values(30,10);
insert into t7(id,a) values(40,9);
3.3 死锁日志
-
------------------------
-
LATEST DETECTED DEADLOCK
-
------------------------
-
2017-09-17 15:15:03 7f78eac15700
-
*** (1) TRANSACTION:
-
TRANSACTION 462308661, ACTIVE 6 sec inserting
-
mysql tables in use 1, locked 1
-
LOCK WAIT 2 lock struct(s), heap size 360, 1 row lock(s), undo log entries 1
-
MySQL thread id 3796966, OS thread handle 0x7f78ead9d700, query id 781045166 localhost root update
-
insert into t7(id,a) values(30,10)
-
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
-
RECORD LOCKS space id 231 page no 4 n bits 72 index `ua` of table `test`.`t7` trx id 462308661 lock mode S waiting
-
*** (2) TRANSACTION:
-
TRANSACTION 462308660, ACTIVE 43 sec inserting, thread declared inside InnoDB 5000
-
mysql tables in use 1, locked 1
-
4 lock struct(s), heap size 1184, 3 row lock(s), undo log entries 2
-
MySQL thread id 3796960, OS thread handle 0x7f78eac15700, query id 781045192 localhost root update
-
insert into t7(id,a) values(40,9)
-
*** (2) HOLDS THE LOCK(S):
-
RECORD LOCKS space id 231 page no 4 n bits 72 index `ua` of table `test`.`t7` trx id 462308660 lock_mode X locks rec but not gap
-
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
-
RECORD LOCKS space id 231 page no 4 n bits 72 index `ua` of table `test`.`t7` trx id 462308660 lock_mode X locks gap before rec insert intention waiting
- *** WE ROLL BACK TRANSACTION (1)
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
【MySQL】死锁案例之三
下载Word文档到电脑,方便收藏和打印~
下载Word文档
相关文章
- 在 Java 中,序列化过程中 put 方法究竟有怎样的影响呢?(Java中put方法在序列化中的影响)
- 如何解决 Java 构建路径问题?(java构建路径问题怎么解决)
- Java 连接不上数据库的原因主要有哪些?(java连不上数据库的原因有哪些)
- 为什么在爬虫开发中更倾向于选择 Java?(为什么选择java做爬虫开发)
- 如何实现 Java 中两个 List 的交集?(java两个list取交集怎么实现)
- Java 中哪些字符需要进行转义?(java需要转义的字符有哪些)
- 如何在 Java 中调用类方法?(java怎么调用类方法)
- 如何在同一项目中巧妙地混合使用 Node.js 与 Java?(如何在同一项目中混合使用Node.js与Java)
- 如何在 Java 中设置时间间隔?(java怎么设置时间间隔)
- 如何解决 Java 反向代理错误?(java反向代理错误怎么解决)
猜你喜欢
2024-04-02
2024-04-02
2024-04-02
MySQL死锁案例分析
最近项目中某个模块稳定复现MySQL死锁问题,本文记录死锁的发生原因以及解决办法。1. 预备知识1.1 表锁和行锁表锁表锁是MySQL中最基本的锁策略,并且是开销最小的策略。表锁会锁定整张数据表,用户的写操作(插入/删除/更新)前,都需要获取写锁(写锁会相互阻
2015-02-06
2024-04-02
2024-04-02
2024-04-02
2024-04-02
2024-04-02
Go并发编程之死锁与活锁的案例分析
死锁就是在并发程序中,两个或多个线程彼此等待对方完成操作,从而导致它们都被阻塞,并无限期地等待对方完成;活锁就是程序一直在运行,但是无法取得进展。本文将从一些案例出发,分析一下它们,希望对大家有所帮助
2023-05-18
剖析6个MySQL死锁案例的原因以及死锁预防策略
MySQL 死锁是面试常问问题,金三银四,所以最近面试相关的文章比较多,本文章是总结的一波死锁问题,和大家分享一下。 Mysql 锁类型和加锁分析 MySQL有三种锁的级别:页级、表级、行级。 **表级锁:**开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲
2015-02-16
2024-04-02
一个 MySQL 数据库死锁的案例和解决方案
按照消除死锁条件的思路,一般会想到将两个线程里的加锁顺序改为一致,但是此场景并不完全适用。
2023-09-23
MySQL 核心模块—揭秘死锁案例分析插入意向锁
没有其它事务在等待获得这条记录的锁,事务 1 想要往这条记录前面的间隙插入记录,不需要等待获得插入意向锁,可以直接插入记录。
2024-04-02
java并发编程死锁定义及避免死锁案例分析
这篇文章主要介绍“java并发编程死锁定义及避免死锁案例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java并发编程死锁定义及避免死锁案例分析”文章能帮助大家解决问题。场景模拟分析场景一:狭路
2023-06-29
2024-04-02
MySQL数据库之Purge死锁问题的示例分析
小编给大家分享一下MySQL数据库之Purge死锁问题的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Purge死锁场景说明Purge死锁说明表中存在记录(unique key) 10,20,30,40 (且有 自
2023-05-30
死锁之谜:探究数据库死锁的原因和解决方案
数据库死锁是一种常见的数据库问题,它会导致事务无法继续执行,进而影响数据库的性能和可用性。本文将探讨数据库死锁的原因并提供相应的解决方案,帮助您有效避免和解决数据库死锁问题。
2024-02-05
编程热搜
[mysql]mysql8修改root密码
use mysqlselect * from user where user="root";update user set password=password("mysql@2020") where user="root";ERROR 1064 (42000)MySQL专题3之MySQL管理
1、启动以及关闭MySQL服务器- 首先,我们需要通过以下命令来检查MySQL服务器是否已经启动:ps -ef | grep mysqld- 如果MySQL已经启动,以上命令将输出mysql进程列表,如果mysql未启动,你可以使用以下
编程资源站
- 资料下载
- 历年试题