mysql innodb 死锁_mysql innodb 死锁分析

mysql Ver 14.14 Distrib 5.7.16, for linux-glibc2.5 (x86_64) using EditLine wrapper #mysql版本 5.7.16

Connection id: 10042

Current database: china9129

Current user: root@localhost

SSL: Not in use

Current pager: stdout

Using outfile: ''

Using delimiter: ;

Server version: 5.7.16-log MySQL Community Server (GPL)

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: utf8

Db characterset: utf8

Client characterset: utf8

Conn. characterset: utf8

UNIX socket: /data/mysql/mysql9129/sock/mysql9129.sock

Uptime: 4 days 6 hours 2 min 31 sec

Threads: 4 Questions: 31133 Slow queries: 0 Opens: 254 Flush tables: 3 Open tables: 58 Queries per second avg: 0.084

SESSION 1:

"root@localhost:mysql9129.sock [(none)]>set global TRANSACTION ISOLATION LEVEL REPEATABLE READ;

"root@localhost:mysql9129.sock [(none)]>select @@tx_isolation;

+-----------------+

| @@tx_isolation |

+-----------------+

| REPEATABLE-READ |

+-----------------+

1 row in set (0.00 sec)

"root@localhost:mysql9129.sock [china9129]>show create table t100;

+-------+----------------------------------------------------------------------------------------------------------+

| Table | Create Table |

+-------+----------------------------------------------------------------------------------------------------------+

| t100 | CREATE TABLE `t100` (

`id` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+-------+----------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

"root@localhost:mysql9129.sock [china9129]>select * from t100;

+-----+

| id |

+-----+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 111 |

+-----+

"root@localhost:mysql9129.sock [china9129]>begin;

Query OK, 0 rows affected (0.00 sec)

"root@localhost:mysql9129.sock [china9129]>select * from t100 where id=5 for update;

+----+

| id |

+----+

| 5 |

+----+

1 row in set (0.00 sec)

"root@localhost:mysql9129.sock [china9129]>delete from t100 where id =3;

Query OK, 1 row affected (3.62 sec)

==========================================================================================================

SESSION 2:

"root@localhost:mysql9129.sock [(none)]>begin;

Query OK, 0 rows affected (0.00 sec)

"root@localhost:mysql9129.sock [(none)]>use china9129;

Database changed

"root@localhost:mysql9129.sock [china9129]>select * from t100 where id=3 for update;

+----+

| id |

+----+

| 3 |

+----+

1 row in set (0.00 sec)

"root@localhost:mysql9129.sock [china9129]>delete from t100 where id =5;

ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

#查看死锁信息

"root@localhost:mysql9129.sock [china9129]>show engine innodb status \G

*************************** 1. row ***************************

Type: InnoDB

Name:

Status:

=====================================

2016-12-20 21:57:45 0x7fa0bffff700 INNODB MONITOR OUTPUT

=====================================

Per second averages calculated from the last 24 seconds

-----------------

BACKGROUND THREAD

-----------------

srv_master_thread loops: 1133 srv_active, 0 srv_shutdown, 362529 srv_idle

srv_master_thread log flush and writes: 363662

----------

SEMAPHORES

----------

OS WAIT ARRAY INFO: reservation count 4540

OS WAIT ARRAY INFO: signal count 5766

RW-shared spins 0, rounds 4683, OS waits 474

RW-excl spins 0, rounds 134731, OS waits 1327

RW-sx spins 6332, rounds 138603, OS waits 2382

Spin rounds per wait: 4683.00 RW-shared, 134731.00 RW-excl, 21.89 RW-sx

------------------------

LATEST DETECTED DEADLOCK #监测出最近的死锁信息

------------------------

2016-12-20 21:56:29 0x7fa0bffff700

*** (1) TRANSACTION: #第一个事物

TRANSACTION 13899, ACTIVE 51 sec starting index read #事物id 13899,活跃了51秒

mysql tables in use 1, locked 1 #mysql有一个表在使用,一个表被锁住

LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s) #有3个锁链表,内存中堆的大小1136, 两行记录被锁定

MySQL thread id 10041, OS thread handle 140330009478912, query id 31128 localhost root updating

#mysql线程id 10041, query id 31128, localhost root用户执行update操作

delete from t100 where id =3 #执行了这个SQL语句的时候,发生了锁等待

*** (1) WAITING FOR THIS LOCK TO BE GRANTED: #等待这个锁被释放

RECORD LOCKS space id 74 page no 3 n bits 80 index PRIMARY of table `china9129`.`t100` trx id 13899 lock_mode X locks rec but not gap waiting

#类型:行锁,等待在t100的主键上 page num 3,加一个X锁(not gap waiting),锁住80 bits。

Record lock, heap no 5 PHYSICAL RECORD: n_fields 3; compact format; info bits 0

0: len 4; hex 80000003; asc ;;

1: len 6; hex 00000000363b; asc 6;;;

2: len 7; hex c7000001660110; asc f ;;

*** (2) TRANSACTION:#第二个事物

TRANSACTION 13900, ACTIVE 31 sec starting index read #事物id 13900,活跃了31秒

mysql tables in use 1, locked 1 #mysql有一个表在使用,一个表被锁住

3 lock struct(s), heap size 1136, 2 row lock(s) #有3个锁链表,内存中堆的大小1136, 两行记录被锁定

MySQL thread id 10042, OS thread handle 140328392718080, query id 31129 localhost root updating

#mysql线程id 10042, query id 31129, localhost root用户执行update操作

delete from t100 where id =5 #执行了这个SQL语句的时候,发生了锁等待

*** (2) HOLDS THE LOCK(S): #事物 13900 持有的锁

RECORD LOCKS space id 74 page no 3 n bits 80 index PRIMARY of table `china9129`.`t100` trx id 13900 lock_mode X locks rec but not gap

#类型:行锁,事物 id 13900,在t100的主键上 page num 3,加一个X锁(not gap 没有间隙锁),锁住80 bits

Record lock, heap no 5 PHYSICAL RECORD: n_fields 3; compact format; info bits 0

0: len 4; hex 80000003; asc ;;

1: len 6; hex 00000000363b; asc 6;;;

2: len 7; hex c7000001660110; asc f ;;

*** (2) WAITING FOR THIS LOCK TO BE GRANTED: #当事物2在执行delete from t100 where id =5的时候,发生锁等待

RECORD LOCKS space id 74 page no 3 n bits 80 index PRIMARY of table `china9129`.`t100` trx id 13900 lock_mode X locks rec but not gap waiting

#类型:行锁,等待在t100的主键上 page num 3,加一个X锁(not gap waiting 没有间隙锁),锁住80 bits。

Record lock, heap no 7 PHYSICAL RECORD: n_fields 3; compact format; info bits 0

0: len 4; hex 80000005; asc ;;

1: len 6; hex 00000000363d; asc 6=;;

2: len 7; hex c90000014c0110; asc L ;;

*** WE ROLL BACK TRANSACTION (2)

#事物2,TRANSACTION 13900被回滚了。报错信息:ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

------------

TRANSACTIONS

------------

Trx id counter 13905

Purge done for trx's n:o 

History list length 568

LIST OF TRANSACTIONS FOR EACH SESSION:

---TRANSACTION 421807334705888, not started

0 lock struct(s), heap size 1136, 0 row lock(s)

---TRANSACTION 13899, ACTIVE 127 sec

3 lock struct(s), heap size 1136, 2 row lock(s), undo log entries 1

MySQL thread id 10041, OS thread handle 140330009478912, query id 31128 localhost root cleaning up

-------

备注:

(1) 在MySQL中,行级锁并不是直接锁记录,而是锁索引。索引分为主键索引和非主键索引两种,如果一条sql语句操作了

主键索引,MySQL就会锁定这条主键索引;如果一 条语句操作了非主键索引,MySQL会先锁定该非主键索引,再锁定相关的主键索引。

在UPDATE、DELETE操作时,MySQL不仅锁定WHERE条件扫描过的所有索引记录,而且会锁定相邻的键值,即所谓的next-key locking

(2) 把死锁信息写入到error.log。

set global innodb_print_all_deadlocks = 1;

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

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

相关文章

django 函数装饰器 变为 类装饰器

aaa 转载于:https://www.cnblogs.com/pythonClub/p/9789190.html

求出2个字符串中的最大公共子串

给定字符串A和B,输出A和B中的最大公共子串。 比如A"aocdfe" B"pmcdfa" 则输出"cdf" void commonstring(char *str1, char *str2, char *maxSubstr) {int i 0, j 0, k 1, maxPos -1, maxLen 0;if ((NULL str1) || (NULL str2) || (NUL…

写flash,要不要加个判断?

相关文章既生Flash,又何生EEPROM?存储器Flash页、扇区、块的区别这是我一个知识星球朋友的提问刚开始我没有认真去思考这个问题,之后我仔细查了下资料,里面的内容还挺多。先看看EMMC的结构EMMC 是在nand flash的基础上增加了一个控…

IT 事业发展:树立自己的品牌

发展事业并达到事业顶峰是指树立自己的形象并进行自我推销。方法就在这里。 摘自 Sutton Hart Press (2011) 出版的《Fame 101》。 Jay 和 Maggie Jessup Fame 101 的基础以及成名公式很简单:成名 树立个人品牌 宣传 将自己的品牌推向市场 个人财务发展 宣传长…

mysql用户数据导入_mysql创建数据库、用户及导入数据_mysql数据库教程

怎样mysql创建数据库、用户及导入数据1. 修改MYSQL服务器字符集为utf8:1.1 当前MYSQL服务器字符集设置SHOW VARIABLES LIKE character_set_%;1.2 修改字符集mysql> SET character_set_client utf8 ;mysql> SET character_set_connection utf8 ;mysql> SET character…

谈谈JDK8中的字符串拼接

字符串拼接问题应该是每个Java程序员都熟知的事情了,几乎每个Java程序员都读过关于StringBuffer/StringBuilder来拼接字符串。 在大多数的教程中,也许你会看到用号拼接字符串会生成多个String,导致性能过差,建议使用StringBuffer/…

破解STM32F103芯片的方法

大家好,我是写代码的篮球球痴本文介绍ARM系列STM32F103芯片的解密方法,其内核是Cortex-M3,内存从16K-512K都有。该芯片主要应用非常广泛,日常消费类电子产品,工控设备,电机驱动,变频器&#xff…

排序算法之两路归并排序(Java)

将2个有序的数组合并为一个有序的数组 时间复杂度为O(nlogn) 默认是按升序进行排序&#xff1a; public class MergeSort { public static int[] sort(int[] data, int low, int high) {int mid (low high) / 2;if (low < high) {sort(data, low, mid);sort(data, m…

一天学一个模式_第一天:策略模式

概念&#xff1a;  策略模式定义了一系列的算法&#xff0c;并将每一个算法封装起来&#xff0c;而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 &#xff08;原文&#xff1a;The Strategy Pattern defines a family of algorithms,encapsula…

python标准库怎么用_Python常用标准库使用(一)

自学python一段时间&#xff0c;之前总是学习基本语法&#xff0c;对Python标准库没怎么接触&#xff0c;所以计划从常用的标准库开始&#xff0c;大体了解一遍&#xff0c;下面是学习过程中的笔记。一、OS模块主要对目录、或者文件操作。常用方法如下&#xff1a;os.listdir(p…

英伟达|jetson nano开发使用的基础详细分享

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;最近我朋友写了一篇英伟达开发板的文章&#xff0c;分享给大家。前言&#xff1a;最近拿到一块jetson nano 2GB版本的板子&#xff0c;折腾了一下&#xff0c;从烧录镜像、修改配件等&#xff0c;准备一篇开箱基础文章给大家…

埃及乘法

乘法可以看成n个a相加&#xff0c;那么所需要的时间为O(n)&#xff0c;那么如何降低乘法的时间呢&#xff08;降低为logn)&#xff1f; 埃及乘法算法就是一种&#xff0c;分为奇数和偶数&#xff0c;&#xff08;例如计算n*a)偶数从1开始是a,然后1✖2&#xff0c;aa以此类推&am…

排序算法之快速排序(Java)

快速排序 平均时间复杂度 O(NlogN) 最差时间复杂度O(N*N) 不稳定 它的基本思想是&#xff1a;通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都要小&#xff0c;然后再按此方法对这两部分数据分别进行快速排序…

shell 自动输入密码

原文地址&#xff1a;http://biancheng.dnbcw.info/linux/297018.html 在shell脚本中需要用root用的来执行指令&#xff1a; sudo 自动输入密码echo "password" | sudo -S netstat -tlnp-S The -S (stdin) option causes sudo to read the password from th…

和PP在腾讯

昨天晚上十点&#xff0c;我在会议室搞项目&#xff0c;PP发消息给我说 「你什么时候下班&#xff0c;等我一下&#xff0c;我下去见见你再走」。我说「你赶紧下来&#xff0c;我熬不住了」。因为确实比较晚&#xff0c;然后自己手上开发的事情也还没完成&#xff0c;有时还会冒…

python求回数_用python求回数

今天学到filter函数&#xff0c;做一道练习题&#xff0c;求回数的&#xff0c;我前前后后差不多用了半个小时才把它弄出来&#xff0c;先是有思路了然后写出来后一直报错&#xff0c;又改改换换&#xff0c;最后其实是某个小问题导致的&#xff0c;每次查这种小问题时都先怀疑…

第二章 寄存器

CPU中的主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。寄存器包括&#xff1a;AX、BX、CX、DX、SI、DI、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。 2.1 通用寄存器 8086CPU的所有寄存器都是16位的&#x…

排序算法之选择法排序(Java)

选择排序 时间复杂度 O(n*n) 不稳定的排序算法 思想是&#xff1a;每一趟从待排序的数据元素中选出最小的一个元素&#xff0c;顺序放在已排好序的数列的最后&#xff0c;直到全部待排序的数据元素排完。 下面是关键部分代码&#xff1a; public static void select_so…

周末生活日记|我们和楠哥

这周是双休&#xff0c;早上跟楠哥一起睡了一个大懒觉。早上11点起来&#xff0c;不过小米音箱在9点的时候就在客厅响音乐&#xff0c;我大叫一声「小爱同学&#xff0c;停止播放」&#xff0c;然后继续蒙头大睡。11点起来&#xff0c;哦&#xff0c;在我们家我还算起的早的&am…

lnmp基于fastcgi实现nginx_php_mysql的分离_LNMP基于FastCGI实现Nginx,PHP,MySQL的分离

LNMP基于FastCGI实现Nginx,PHP,MySQL的分离[日期&#xff1a;2012-11-12]来源&#xff1a;Linux社区作者&#xff1a;laoguang[字体&#xff1a;大 中 小]平时安装LNMP是把它们安装到同一台机器上&#xff0c;我想这个对大家来说丝毫没有挑战&#xff0c;下面我们实现把他们剥离…