伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

不会mysql死锁排查,请看此文

来源:本站原创 浏览:96次 时间:2022-11-09
应用访问Mysql数据库的时候,如果业务逻辑写的不严谨,不规范,就会发生死锁,如果此业务逻辑调用并发高,则业务日志经常会有死锁的错误日志产生。应用发生死锁,于是dba就去排查,看数据库的错误日志,就会发现,没有任何关于死锁的日志告警,这是因为默认配置情况下,数据库是不打印任何死锁的日志信息。 那如何去排查应用的死锁问题呢,下面给大家详细介绍。先看看关于死锁信息打印的参数,默认是关闭
mysql> show variables like 'innodb_print_all_deadlocks';+----------------------------+-------+| Variable_name              | Value |+----------------------------+-------+| innodb_print_all_deadlocks | OFF   |+----------------------------+-------+1 row in set (0.01 sec)

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

mysql> set global innodb_print_all_deadlocks=on;Query OK, 0 rows affected (0.00 sec)mysql> show variables like 'innodb_print_all_deadlocks';+----------------------------+-------+| Variable_name              | Value |+----------------------------+-------+| innodb_print_all_deadlocks | ON    |+----------------------------+-------+1 row in set (0.01 sec)

开启之后,下面模拟一个死锁的场景
开启会话1,执行如下语句

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> update t_test10 set name='test33' where id='1';Query OK, 0 rows affected (0.00 sec)Rows matched: 1  Changed: 0  Warnings: 0mysql> update t_test10 set name='testkii' where id='4';Query OK, 0 rows affected (5.38 sec)Rows matched: 1  Changed: 0  Warnings: 0

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

mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> update t_test10 set name='testkii' where id='4';Query OK, 0 rows affected (0.00 sec)Rows matched: 1  Changed: 0  Warnings: 0mysql> update t_test10 set name='test33' where id='1';ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

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


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

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

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

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net