美文网首页
MySQL死锁出现如何排查?

MySQL死锁出现如何排查?

作者: 欢喜的看着书 | 来源:发表于2023-08-02 08:46 被阅读0次

关于Mysql 查询是否存在锁表,这里介绍一种常用的方式。
该方式思路是查询出被锁的事务和对应的sql,然后找到被锁的事务ID,紧急的处理是:使用事务ID,进行kill id来释放锁。 然后根据sql慢慢定位到对应的功能点,分析出现死锁的原因,对业务代码进行修改彻底解决问题,一般情况下死锁出现是因为业务代码的写法有问题导致的,出现一次后不解决,后面还需继续出现

1、查看正在进行中的事务

SELECT * FROM information_schema.INNODB_TRX

2、查看正在锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

3、查看等待锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

4、查询是否锁表

SHOW OPEN TABLES where In_use > 0;

在发生死锁时,这几种方式都可以查询到和当前死锁相关的信息。

5、查看最近死锁的日志

show engine innodb status

解除死锁
如果需要解除死锁,有一种最简单粗暴的方式,那就是找到进程id之后,直接干掉。

查看当前正在进行中的进程

show processlist

// 也可以使用

SELECT * FROM information_schema.INNODB_TRX;

这两个命令找出来的进程id 是同一个。

杀掉进程对应的进程 id

kill id

验证(kill后再看是否还有锁)

SHOW OPEN TABLES where In_use > 0;

相关文章

  • Mysql死锁如何排查:insert on duplicate死

    前言 遇到Mysql死锁问题,我们应该怎么排查分析呢?之前线上出现一个insert on duplicate死锁问...

  • mysql简单排查&终止死锁线程 2022-03-29

    mysql简单排查&终止死锁线程 INFORMATION_SCHEMA MySQL把INFORMATION_SCH...

  • mysql 死锁排查

    一、show ENGINE INNODB status查看死锁位置,分析。 二、首先解决死锁可以从死锁发生的条件入...

  • mysql 死锁排查

    1、当出现事务执行阻塞时,首先想到查询当前MySQL进程状态: 2、查看当前的死锁线程id和导致的sql 3、条件...

  • MySQL死锁排查

    执行简单的update语句失效:报错 Lock wait timeout exceeded; try restar...

  • 2020-04-08数据库死锁问题排查

    在测试同学测试过程中偶然发现日志中出现异常死锁日志如下: 出现问题后,立刻定位日志,排查死锁原因。以下为排查过程,...

  • java并发--java死锁

    本篇结构: 前言 什么是死锁 产生死锁的必要条件 死锁的代码示例 死锁排查 如何避免死锁 总结 一、前言 今天被问...

  • Mysql死锁监控排查

    死锁监控

  • MySQL死锁问题排查

    概述 在开发中经常用到的mysql数据库,mysql作为开源的数据库有很多优越的地方;大家可以不了解其中的原理,但...

  • jstack命令:教你如何排查多线程问题

    这是之前的一个死锁案例: 一个多线程死锁案例,如何避免及解决死锁问题? 如程序中发生这样的死锁问题该如何排查呢?我...

网友评论

      本文标题:MySQL死锁出现如何排查?

      本文链接:https://www.haomeiwen.com/subject/kvsupdtx.html