第一句子大全,网罗天下好句子,好文章尽在本站!

不会mysql死锁排查 请看此文

时间:2016-06-19

应用发生死锁,于是dba就去排查,看数据库的错误日志,就会发现,没有任何关于死锁的日志告警,这是因为默认配置情况下,数据库是不打印任何死锁的日志信

友情提示:本文共有 591 个字,阅读大概需要 2 分钟。

应用访问Mysql数据库的时候,如果业务逻辑写的不严谨,不规范,就会发生死锁,如果此业务逻辑调用并发高,则业务日志经常会有死锁的错误日志产生。应用发生死锁,于是dba就去排查,看数据库的错误日志,就会发现,没有任何关于死锁的日志告警,这是因为默认配置情况下,数据库是不打印任何死锁的日志信息,那如何去排查应用的死锁问题呢,下面给大家详细介绍。

先看看关于死锁信息打印的参数,默认是关闭

想要在发生死锁的情况打印相关信息,需要开启这个参数

开启之后,下面模拟一个死锁的场景

开启会话1,执行如下语句

开启会话2,执行如下语句

在会话2里,可以很明显的看到,mysql检测到Deadlock,并回滚了会话2的sql,让会话的事物能继续进行。那mysql怎么选择回滚那个会话呢,主要从回滚代价上去考虑的,谁的锁持有的少,则回滚对应的会话事物。下面看看数据库的死锁详细信息看看

在数据库告警日志可以找死锁发生时,对应的sql语句和应用访问用户,应用访问IP,有了这些只会,再去找开发,看对应的代码逻辑,就能很容易的定位到问题,并解决。

给大家举一个实际的业务场景,在电商场景,下单的时候,会有主订单表和扩展订单表,如果有一个代码接口更新订单表顺序为(主订单表,扩展订单表),而另一个代码接口更新订单表顺序为(扩展订单表,主订单表),在并发高的时候,就很容易就发送死锁。

喜欢我的小伙伴,可以在下方留言和关注。

本文如果对你有帮助,请点赞收藏《不会mysql死锁排查 请看此文》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
《面试八股文》之 MySql 35卷

《面试八股文》之 MySql 35卷

...性和持久性。 好处: 1.「读和写可以完全地并发执行」,不会互相阻塞 2.先写入 log 中,磁盘写入从「随机写变为顺序写」,降低了 client 端的延迟就。并且,由于顺序写入大概率是在一个磁盘块内,这样产生的 io 次数也大大降...

2012-07-17 #经典句子

mysql语句

mysql语句

...delete from 表名;(这个清空只是数据和内容的清空。自增id不会被清空)truncate table 表名;(成功返回0)(自增id也一同会被清掉)truncate与delete的区别:a.事务:truncate是不可以rollback的,但是delete是可以rollback的;b.效果:truncate...

2007-07-27 #经典句子

DBA必备技能 mysql权限管理(DCL语句)

DBA必备技能 mysql权限管理(DCL语句)

...,如公司来了一个新员工,新员工技术有待观察,我肯定不会把root的权限给他的(实际工作中DBA不会吧root的权限交给任何人),那我就新建一个临时用户,我仅仅将查询的权限给这个用户,这样就能够进行很严格的权限控制,...

2023-05-14 #经典句子

Mysql查询语句基本形式

Mysql查询语句基本形式

1.查询语句基本形式select 子句【from 子句】【where 子句】【group 子句】【having子句】【order 子句】【limit 子句】2.select子句select 【all | distinct 】字段或表达式1 【as 别名1】,字段或表达式2 【as 别名2】,.....all :表示列出所有...

2007-09-03 #经典句子

mysql中insert语句如何使用?

mysql中insert语句如何使用?

在我们操作数据库的过程中,能够熟练对数据库中的表以及数据进行增删改查等操作是非常重要的。想要得心应手地操作数据,那么我们必须了解sql语句的用法。在mysql中insert语句如何使用?以下是我的回答,希望能够有所帮助...

2022-12-21 #经典句子

MySQL中delete和update语句的用法

MySQL中delete和update语句的用法

昨天和大家分享学习了insert,今天我们一起学习一下删除与更新,即delete和update的用法。我们先一起回顾一下,这两个的语法:1、更新记录语法:UPDATE 表名 SET 属性名1=取值1, 属性名2=取值2,…,属性名n=取值nWHERE 条件表达式;2、...

2023-06-17 #经典句子

mysql insert语句

mysql insert语句

insertintotableName(colunm1,colunm2,..)values(value1,value2...)(value1,value2...);mysql无论如何也做不到用一条语句给两张表插入数据。理由:一个insert语句仅能在一个表中插入,这是语法的规定。工具:mysql5.6步骤(即插入数据举例):如user表有...

2023-08-19 #经典句子

知识:MySQL数据库语句实例

知识:MySQL数据库语句实例

目前MySQL数据库是网站比较常用的,这种数据库安全可靠。那么专业的技术人员该如何写好数据库的语句呢?在下面的内容中,廊坊网站建设公司会将自己的一些经验分享给大家。1、显示某一列出现过N次的值:SELECTidFROMtblGROUPBYi...

2023-09-11 #经典句子