`
zhengdl126
  • 浏览: 2510037 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

MySQL死锁导致无法查询

 
阅读更多


客服反馈后台无法查询,原因大概知道,是因为MySQL的事务产生了死锁,以往都不知道是哪个事务锁住了,只能很粗暴地重启MySQL
最近查找到一个方法,不用重启MySQL,记录如下

登录到MySQL,来看下有哪些MySQL事务

可以看到一个时间持续了比较久的事务,现在时间是13点了,而这个事务的开始时间是2012-11-09 12:15:14,显然是不正常的,我们看这个事务对应的mysql的线程ID(trx_mysql_thread_id)是82230715,就是这个事务导致的

    13:01:48pm> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
    +-----------+-----------+---------------------+-----------------------+------------------+------------+---------------------+-----------+---------------------+-------------------+-------------------+------------------+-----------------------+-----------------+-------------------+-------------------------+---------------------+-------------------+------------------------+----------------------------+---------------------------+---------------------------+
    | trx_id | trx_state | trx_started | trx_requested_lock_id | trx_wait_started | trx_weight | trx_mysql_thread_id | trx_query | trx_operation_state | trx_tables_in_use | trx_tables_locked | trx_lock_structs | trx_lock_memory_bytes | trx_rows_locked | trx_rows_modified | trx_concurrency_tickets | trx_isolation_level | trx_unique_checks | trx_foreign_key_checks | trx_last_foreign_key_error | trx_adaptive_hash_latched | trx_adaptive_hash_timeout |
    +-----------+-----------+---------------------+-----------------------+------------------+------------+---------------------+-----------+---------------------+-------------------+-------------------+------------------+-----------------------+-----------------+-------------------+-------------------------+---------------------+-------------------+------------------------+----------------------------+---------------------------+---------------------------+
    | 31868CED0 | RUNNING | 2012-11-09 12:15:14 | NULL | NULL | 2 | 82230715 | NULL | NULL | 0 | 0 | 2 | 376 | 1 | 0 | 0 | REPEATABLE READ | 1 | 1 | NULL | 0 | 10000 |
    +-----------+-----------+---------------------+-----------------------+------------------+------------+---------------------+-----------+---------------------+-------------------+-------------------+------------------+-----------------------+-----------------+-------------------+-------------------------+---------------------+-------------------+------------------------+----------------------------+---------------------------+---------------------------+

我们登录到mysql把它kill掉

    13:01:55pm> kill 82230715;

这样,就可以查询了

其他

查看正在锁的事务

    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

查看等待锁的事务

    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

分享到:
评论

相关推荐

    mysql死锁的一些案例

    NULL 博文链接:https://fs20041242.iteye.com/blog/1732749

    关于MySQL死锁问题的深入分析

    主要给大家介绍了关于MySQL死锁问题的深入分析,文中通过示例代码介绍的非常详细,对大家的学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    mysql 杀锁脚本

    mysql数据库在查询量大的情况下,有出现死锁状况,有时候死锁导致服务挂了的情况,这脚本就能很好的管理mysql死锁进程。

    该如何解决MySQL中的死锁问题.txt

    MySQL中的死锁是指两个或多个事务在相互等待对方释放资源,导致它们都无法继续执行的情况。解决MySQL中的死锁问题通常涉及多个方面,包括监控死锁、分析死锁原因、优化事务设计以及调整系统配置等。以下是一些解决...

    一次mysql死锁的排查过程

     以前接触到的数据库死锁,都是批量更新时加锁顺序不一致而导致的死锁,但是上周却遇到了一个很难理解的死锁。借着这个机会又重新学习了一下mysql的死锁知识以及常见的死锁场景。在多方调研以及和同事们的讨论下...

    查找MySQL中查询慢的SQL语句方法

    这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用–log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,...

    MySQL死锁套路之唯一索引下批量插入顺序不一致

    死锁的本质是资源竞争,批量插入如果顺序不一致很容易导致死锁,我们来分析一下这个情况。为了方便演示,把批量插入改写为了多条 insert。 先来做几个小实验,简化的表结构如下 CREATE TABLE `t1` ( `id` int(11...

    MySQL死锁、锁、索引相关资料整理

    死锁是指不同的事务都无法继续的情况,由于每个事务都持有另一个需要的锁导致。因为两个事务都在等待资源可用,所以它们都不会释放它所拥有的锁。 当事务锁定多个表中的行(通过如UPDATE或SELECT … FOR

    Mysql 数据库死锁过程分析(select for update)

    最近有项目需求,需要保证多台机器不拿到相同的数据,后来发现... for update经常导致数据库死锁问题,下面小编给大家介绍mysql 数据库死锁过程分析(select for update),对mysql数据库死锁问题感兴趣的朋友一起学习吧

    MySQL Innodb表导致死锁日志情况分析与归纳

    案例描述在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志。两个sql语句如下:(1)insert into backup_table select * from source_table...

    数据库死锁

    数据库死锁sql语句

    一次Mysql死锁排查过程的全纪录

    之前接触到的数据库死锁,都是批量更新时加锁顺序不一致而导致的死锁,但是上周却遇到了一个很难理解的死锁。借着这个机会又重新学习了一下mysql的死锁知识以及常见的死锁场景。在多方调研以及和同事们的讨论下终于...

    由不同的索引更新解决MySQL死锁套路

    前几篇文章介绍了用源码的方式来调试锁相关的信息,这里同样用这个工具来解决一个线上实际的死锁案例,下面小编来简单介绍下

    通过唯一索引S锁与X锁来了解MySQL死锁套路

    毫不夸张的说,有一半以上的死锁问题由唯一索引贡献,后面介绍的很多死锁的问题都跟唯一索引有关。这次我们讲一段唯一索引 S 锁与 X 锁的案例,下面小编来和大家一起学习一下

    细说MySQL死锁与日志二三事

    最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现。甚至有些异常还比较诡异,最后 root cause 分析颇费周折。那实际业务当中咱们如何能快速的...

    查看数据库死锁SQL

    该脚本为MYSQL数据库中查看死锁的语句,可以查看到死锁的ID,造成死锁的语句以及造成死锁的计算机

    一不小心,间隙锁引发的报警现场

    运维同学发现有大量的MySQL死锁日志输出,如果你的系统有对MySQL进行死锁监控,可会在图形界面上很直观的发现这个问题。 你会发现日志里有大量下面这样的log输出: Deadlock found when trying to get lock; try ...

    10道精选MySQL面试题

    解释不同事务隔离级别的含义以及可能导致的问题(脏读、不可重复读、幻读),并指出MySQL的默认隔离级别是什么。 当表数据量很大时,如何进行SQL查询优化以提高查询效率? 如何设计合适的索引来改善特定查询语句的...

Global site tag (gtag.js) - Google Analytics