MySQL死锁分析一例
Tomcat日志报死锁错误,show innodb status获取死锁信息:
------------------------
LATEST DETECTED DEADLOCK
------------------------
181107 9:30:46
*** (1) TRANSACTION:
TRANSACTION 2067C318, ACTIVE 16 sec fetching rows
mysql tables in use 1, locked 1
LOCK WAIT 2183 lock struct(s), heap size 407992, 145 row lock(s), undo log entries 8
MySQL thread id 20259, OS thread handle 0x189c, query id 276602977 localhost 127.0.0.1 root updating
delete from a93 where patientId=164136 and count=9
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 4609 page no 4 n bits 136 index `PRIMARY` of table `emr_new2`.`a93` trx id 2067C318 lock_mode X locks rec but not gap waiting
Record lock, heap no 4 PHYSICAL RECORD: n_fields 71; compact format; info bits 0
0: len 4; hex 00000003; asc ;;
1: len 6; hex 000010d0240c; asc $ ;;
2: len 7; hex 9b000023d70110; asc # ;;
3: len 2; hex 3630; asc 60;;
4: len 1; hex 31; asc 1;;
5: len 8; hex d2f2c0bbceb2d1d7; asc ;;
6: len 10; hex d0d0c0bbceb2c7d0b3fd; asc ;;
7: len 0; hex ; asc ;;
8: len 1; hex 32; asc 2;;
9: len 0; hex ; asc ;;
10: len 0; hex ; asc ;;
11: len 0; hex ; asc ;;
12: len 0; hex ; asc ;;
13: len 0; hex ; asc ;;
14: len 0; hex ; asc ;;
15: len 0; hex ; asc ;;
16: len 0; hex ; asc ;;
17: len 0; hex ; asc ;;
18: len 0; hex ; asc ;;
19: len 0; hex ; asc ;;
20: len 0; hex ; asc ;;
21: len 0; hex ; asc ;;
22: len 0; hex ; asc ;;
23: len 0; hex ; asc ;;
24: len 0; hex ; asc ;;
25: len 0; hex ; asc ;;
26: len 0; hex ; asc ;;
27: len 0; hex ; asc ;;
28: len 0; hex ; asc ;;
29: len 0; hex ; asc ;;
30: len 0; hex ; asc ;;
31: len 0; hex ; asc ;;
32: len 0; hex ; asc ;;
33: len 0; hex ; asc ;;
34: len 0; hex ; asc ;;
35: len 0; hex ; asc ;;
36: len 0; hex ; asc ;;
37: len 0; hex ; asc ;;
38: len 0; hex ; asc ;;
39: len 0; hex ; asc ;;
40: len 0; hex ; asc ;;
41: len 0; hex ; asc ;;
42: len 0; hex ; asc ;;
43: len 0; hex ; asc ;;
44: len 0; hex ; asc ;;
45: len 0; hex ; asc ;;
46: len 0; hex ; asc ;;
47: len 0; hex ; asc ;;
48: len 0; hex ; asc ;;
49: len 0; hex ; asc ;;
50: len 0; hex ; asc ;;
51: len 0; hex ; asc ;;
52: len 0; hex ; asc ;;
53: len 0; hex ; asc ;;
54: len 0; hex ; asc ;;
55: SQL NULL;
56: len 1; hex 30; asc 0;;
57: len 1; hex 30; asc 0;;
58: len 1; hex 6e; asc n;;
59: len 4; hex 80000a40; asc @;;
60: len 4; hex 80000000; asc ;;
61: len 2; hex 3020; asc 0 ;;
62: len 0; hex ; asc ;;
63: len 20; hex 3020202020202020202020202020202020202020; asc 0 ;;
64: len 6; hex 6e2020202020; asc n ;;
65: len 4; hex 59f974ee; asc Y t ;;
66: len 2; hex 3931; asc 91;;
67: len 6; hex cdf5bed5c7ef; asc ;;
68: len 30; hex 3230c4eac7b0d2f2d3d2b1c7b2e0c6a4b7f4bbf9b5d7cfb8b0fbb0a9a3ac; asc 20 ; (total 114 bytes);
69: len 0; hex ; asc ;;
70: len 4; hex 80000001; asc ;; *** (2) TRANSACTION:
TRANSACTION 2067C43F, ACTIVE 7 sec fetching rows, thread declared inside InnoDB 424
mysql tables in use 1, locked 1
2223 lock struct(s), heap size 440760, 192 row lock(s), undo log entries 8
MySQL thread id 20135, OS thread handle 0xf28, query id 276602976 localhost 127.0.0.1 root updating
delete from a93 where patientId=164136 and count=9
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 4609 page no 4 n bits 136 index `PRIMARY` of table `emr_new2`.`a93` trx id 2067C43F lock_mode X locks rec but not gap
Record lock, heap no 4 PHYSICAL RECORD: n_fields 71; compact format; info bits 0
0: len 4; hex 00000003; asc ;;
1: len 6; hex 000010d0240c; asc $ ;;
2: len 7; hex 9b000023d70110; asc # ;;
3: len 2; hex 3630; asc 60;;
4: len 1; hex 31; asc 1;;
5: len 8; hex d2f2c0bbceb2d1d7; asc ;;
6: len 10; hex d0d0c0bbceb2c7d0b3fd; asc ;;
7: len 0; hex ; asc ;;
8: len 1; hex 32; asc 2;;
9: len 0; hex ; asc ;;
10: len 0; hex ; asc ;;
11: len 0; hex ; asc ;;
12: len 0; hex ; asc ;;
13: len 0; hex ; asc ;;
14: len 0; hex ; asc ;;
15: len 0; hex ; asc ;;
16: len 0; hex ; asc ;;
17: len 0; hex ; asc ;;
18: len 0; hex ; asc ;;
19: len 0; hex ; asc ;;
20: len 0; hex ; asc ;;
21: len 0; hex ; asc ;;
22: len 0; hex ; asc ;;
23: len 0; hex ; asc ;;
24: len 0; hex ; asc ;;
25: len 0; hex ; asc ;;
26: len 0; hex ; asc ;;
27: len 0; hex ; asc ;;
28: len 0; hex ; asc ;;
29: len 0; hex ; asc ;;
30: len 0; hex ; asc ;;
31: len 0; hex ; asc ;;
32: len 0; hex ; asc ;;
33: len 0; hex ; asc ;;
34: len 0; hex ; asc ;;
35: len 0; hex ; asc ;;
36: len 0; hex ; asc ;;
37: len 0; hex ; asc ;;
38: len 0; hex ; asc ;;
39: len 0; hex ; asc ;;
40: len 0; hex ; asc ;;
41: len 0; hex ; asc ;;
42: len 0; hex ; asc ;;
43: len 0; hex ; asc ;;
44: len 0; hex ; asc ;;
45: len 0; hex ; asc ;;
46: len 0; hex ; asc ;;
47: len 0; hex ; asc ;;
48: len 0; hex ; asc ;;
49: len 0; hex ; asc ;;
50: len 0; hex ; asc ;;
51: len 0; hex ; asc ;;
52: len 0; hex ; asc ;;
53: len 0; hex ; asc ;;
54: len 0; hex ; asc ;;
55: SQL NULL;
56: len 1; hex 30; asc 0;;
57: len 1; hex 30; asc 0;;
58: len 1; hex 6e; asc n;;
59: len 4; hex 80000a40; asc @;;
60: len 4; hex 80000000; asc ;;
61: len 2; hex 3020; asc 0 ;;
62: len 0; hex ; asc ;;
63: len 20; hex 3020202020202020202020202020202020202020; asc 0 ;;
64: len 6; hex 6e2020202020; asc n ;;
65: len 4; hex 59f974ee; asc Y t ;;
66: len 2; hex 3931; asc 91;;
67: len 6; hex cdf5bed5c7ef; asc ;;
68: len 30; hex 3230c4eac7b0d2f2d3d2b1c7b2e0c6a4b7f4bbf9b5d7cfb8b0fbb0a9a3ac; asc 20 ; (total 114 bytes);
69: len 0; hex ; asc ;;
70: len 4; hex 80000001; asc ;; *** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 4609 page no 5 n bits 144 index `PRIMARY` of table `emr_new2`.`a93` trx id 2067C43F lock_mode X locks rec but not gap waiting
Record lock, heap no 36 PHYSICAL RECORD: n_fields 71; compact format; info bits 0
0: len 4; hex 00000068; asc h;;
1: len 6; hex 000010fb7bde; asc { ;;
2: len 7; hex 4a000040381ed0; asc J @8 ;;
3: len 0; hex ; asc ;;
4: len 0; hex ; asc ;;
5: len 0; hex ; asc ;;
6: len 0; hex ; asc ;;
7: len 0; hex ; asc ;;
8: len 1; hex 33; asc 3;;
9: len 0; hex ; asc ;;
10: len 0; hex ; asc ;;
11: len 0; hex ; asc ;;
12: len 0; hex ; asc ;;
13: len 0; hex ; asc ;;
14: len 0; hex ; asc ;;
15: len 0; hex ; asc ;;
16: len 0; hex ; asc ;;
17: len 0; hex ; asc ;;
18: len 0; hex ; asc ;;
19: len 0; hex ; asc ;;
20: len 0; hex ; asc ;;
21: len 12; hex bfd5b8b9d1aaccc7cadccbf0; asc ;;
22: len 1; hex 33; asc 3;;
23: len 4; hex c4ead3e0; asc ;;
24: len 10; hex ceb4d3c3d2a9d6cec1c6; asc ;;
25: len 0; hex ; asc ;;
26: len 0; hex ; asc ;;
27: len 0; hex ; asc ;;
28: len 0; hex ; asc ;;
29: len 0; hex ; asc ;;
30: len 0; hex ; asc ;;
31: len 0; hex ; asc ;;
32: len 0; hex ; asc ;;
33: len 0; hex ; asc ;;
34: len 0; hex ; asc ;;
35: len 0; hex ; asc ;;
36: len 0; hex ; asc ;;
37: len 0; hex ; asc ;;
38: len 0; hex ; asc ;;
39: len 0; hex ; asc ;;
40: len 0; hex ; asc ;;
41: len 0; hex ; asc ;;
42: len 0; hex ; asc ;;
43: len 0; hex ; asc ;;
44: len 0; hex ; asc ;;
45: len 0; hex ; asc ;;
46: len 0; hex ; asc ;;
47: len 0; hex ; asc ;;
48: len 0; hex ; asc ;;
49: len 0; hex ; asc ;;
50: len 0; hex ; asc ;;
51: len 0; hex ; asc ;;
52: len 0; hex ; asc ;;
53: len 0; hex ; asc ;;
54: len 0; hex ; asc ;;
55: SQL NULL;
56: len 1; hex 30; asc 0;;
57: len 1; hex 30; asc 0;;
58: len 1; hex 6e; asc n;;
59: len 4; hex 80000876; asc v;;
60: len 4; hex 80000000; asc ;;
61: len 2; hex 3020; asc 0 ;;
62: len 0; hex ; asc ;;
63: len 20; hex 3020202020202020202020202020202020202020; asc 0 ;;
64: len 6; hex 6e2020202020; asc n ;;
65: len 4; hex 5a1a2d94; asc Z - ;;
66: len 4; hex 31373133; asc 1713;;
67: len 6; hex d5c5d1debaec; asc ;;
68: len 9; hex 756e646566696e6564; asc undefined;;
69: len 3; hex 313435; asc 145;;
70: len 4; hex 80000001; asc ;; *** WE ROLL BACK TRANSACTION (1)
TRANSACTION 2067C318, ACTIVE 16 sec fetching rows
mysql tables in use 1, locked 1
LOCK WAIT 2183 lock struct(s), heap size 407992, 145 row lock(s), undo log entries 8
MySQL thread id 20259, OS thread handle 0x189c, query id 276602977 localhost 127.0.0.1 root updating
delete from a93 where patientId=164136 and count=9
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 4609 page no 4 n bits 136 index `PRIMARY` of table `emr_new2`.`a93` trx id 2067C318 lock_mode X locks rec but not gap waiting
Record lock, heap no 4 PHYSICAL RECORD: n_fields 71; compact format; info bits 0
*** (2) TRANSACTION:
TRANSACTION 2067C43F, ACTIVE 7 sec fetching rows, thread declared inside InnoDB 424
mysql tables in use 1, locked 1
2223 lock struct(s), heap size 440760, 192 row lock(s), undo log entries 8
MySQL thread id 20135, OS thread handle 0xf28, query id 276602976 localhost 127.0.0.1 root updating
delete from a93 where patientId=164136 and count=9
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 4609 page no 4 n bits 136 index `PRIMARY` of table `emr_new2`.`a93` trx id 2067C43F lock_mode X locks rec but not gap
Record lock, heap no 4 PHYSICAL RECORD: n_fields 71; compact format; info bits 0
可以看到两个事务 TRANSACTION 2067C318 和 TRANSACTION 2067C43F 分别执行: delete from a93 wehre patientId=164136 and count=9
导致了相互等待。
查看表结构和数据量,发现 patientId未加索引,数据量很大,导致delete语句会全表扫描,容易长时间持有锁。
加上索引: alter table a93 add index patientId(patientId);
MySQL死锁分析一例的更多相关文章
- 线上BUG:MySQL死锁分析实战
原文链接:线上BUG:MySQL死锁分析实战 1 线上告警 我们不需要关注截图中得其他信息,只要能看到打印得org.springframework.dao.DeadlockLoserDataAcces ...
- <转>一个最不可思议的MySQL死锁分析
1 死锁问题背景 1 1.1 一个不可思议的死锁 1 1.1.1 初步分析 3 1.2 如何阅读死锁日志 3 2 死锁原因深入剖析 4 2.1 Delete操作的加锁逻辑 4 2.2 死锁预防策略 5 ...
- MySQL死锁分析
死锁问题背景 做MySQL代码的深入分析也有些年头了,再加上自己10年左右的数据库内核研发经验,自认为对于MySQL/InnoDB的加锁实现了如指掌,正因如此,前段时间,还专门写了一篇洋洋洒洒的文章, ...
- 一个最不可思议的MySQL死锁分析
1 死锁问题背景 1 1.1 一个不可思议的死锁 1 1.1.1 初步分析 3 1.2 如何阅读死锁日志 3 2 死锁原因深入剖析 4 2. ...
- 一次线上mysql死锁分析
一.现象 发运车次调用发车接口时发生异常,后台抛出数据库死锁日志. 二.原因分析 通过日志可以看出事务T1等待 heap no 8的行锁 (X locks 排他锁) 事务T2持有heap no 8的行 ...
- Mysql 死锁分析
1. 结论 死锁检查机制 当事务A需要获取一个行锁时(例如更新一行数据),假如需要获取行1的锁 检查其他事务有没有已获取了行1的锁. 如果有,例如事务B已获取了行1的锁. 继续检查事务B在等待的锁,如 ...
- Mysql 死锁问题
Innodb锁系统(4) Insert/Delete 锁处理及死锁示例分析 http://mysqllover.com/?p=431 关于innodb死锁 http://afei2.sinaapp.c ...
- MySQL 死锁问题分析
转载: MySQL 死锁问题分析 线上某服务时不时报出如下异常(大约一天二十多次):"Deadlock found when trying to get lock;". Oh, M ...
- mysql死锁问题分析
线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”. Oh, My God! 是死锁问题.尽管报错不多,对性能目前看来 ...
随机推荐
- 深圳奥特迅现金流量——RESSET数据库
现金流不好,很多年都是负数.到公司官方网站上收集信息,拳头产品有矩阵柔性充电堆,主要盈利产品有电源和电源管理系统.还承担了深圳市的充电桩交钥匙项目. 下面是它这些年的股价,在大牛市的时候也上升至五十几 ...
- python基础15下_迭代器_生成器
print(dir([])) #告诉我列表拥有的所有方法 # 双下方法 # print([1].__add__([2])) print([1]+[2]) ret = set(dir([]))& ...
- linux centos7下源码 tar安装mysql5.7.23(5.7以上均可试用)
1.工具:mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz.centos7 2.解压后,将mysql-5.7.22-linux-glibc2.12-x86_64里面 ...
- CentOS 6 RPM安装包下载地址
32位系统的RPM安装包的下载地址 http://mirrors.163.com/centos/6/os/i386/Packages/ 64位系统的RPM安装包的下载地址 http://mirrors ...
- mysql 实现 sqlserver的row_number over() 方法
1.创建表 CREATE TABLE `heyf_t10` ( `empid` int(11) DEFAULT NULL, `deptid` int(11) DEFAULT NULL, `salary ...
- dos4章
批处理中的变量,我把他分为两类,分别为"系统变量"和"自定义变量" 我们现在来详解这两个变量! 一.系统变量 他们的值由系统将其根据事先定义的条件自动赋值,也就 ...
- Java中8种常见的排序方法
排序方法的演示1)插入排序(直接插入排序.希尔排序)2)交换排序(冒泡排序.快速排序)3)选择排序(直接选择排序.堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少 ...
- Python 查看线程的进程id
import os from threading import Thread # from multiprocessing import Process def f1(n): print('1号',o ...
- 城市扩张实验---ARCGIS处理踩雷
1. 将每个坐标点按照所属泰森多边形分类后,得到了数据统计表,导出到excel里面数据透析. 数据透析行代表泰森多边形编号,列代表地物类别,求和项是frequency.一开始的求和不会显示求和,,而是 ...
- golang struct
ex1 /* https://golangbot.com/structs/ struct 结构 结构就是一组字段. */ package main import "fmt" // ...