`
zhengdl126
  • 浏览: 2530992 次
  • 性别: 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死锁的一些案例

    这篇博客文章《mysql死锁的一些案例》可能深入探讨了MySQL中死锁的产生原因、表现形式以及解决策略。虽然具体内容未给出,但我们可以根据通常的死锁情况来进行分析。 1. **死锁产生的原因**: - 资源请求顺序不同...

    mysql死锁检测机制初探1

    在 MySQL 中,死锁是指两个或两个以上的事务互相等待资源,导致事务无法继续执行的现象。死锁的形成是由于事务之间的锁等待和资源竞争所引起的。 二、死锁检测机制的实现 MySQL 的死锁检测机制是通过遍历事务之间...

    mysql死锁解决

    死锁是指两个或两个以上的事务在执行过程中,由于每个事务都持有某些资源且又都在等待其他事务释放其持有的资源,导致这些事务都无法继续执行的现象。在MySQL中,尤其是在InnoDB存储引擎下,当检测到死锁时,MySQL会...

    mysql死锁分析

    ### MySQL死锁分析 #### 死锁问题背景 在MySQL的使用过程中,死锁是一个较为常见的现象,尤其是在并发量较大的应用场景下。死锁的发生往往会给系统带来不可预知的影响,严重时甚至会导致整个数据库服务不可用。...

    一个最不可思议的MySQL死锁分析1

    MySQL中的死锁问题是一个复杂而微妙的议题,尤其是在数据库优化和并发控制中。本文将深入探讨一个看似不可能发生的死锁案例,并分析其背后的原理。死锁通常发生在多个事务相互等待对方释放资源的情况下,但在这个...

    mysql-一些常见的mysql死锁案例-笔记记录.zip

    总之,理解MySQL死锁的原理、识别死锁的方法以及如何预防和解决死锁,对于提升系统的稳定性和性能至关重要。在实际操作中,应结合业务需求和数据库特性,采取相应的策略来避免死锁的发生。通过深入学习和实践,我们...

    MYSQL 数据库死锁

    MySQL数据库死锁是数据库系统中常见的问题,它发生在两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉它们将无法继续执行。了解和处理死锁是数据库管理员和开发人员必备的技能。...

    mysql死锁以及死锁日志分析1

    死锁发生时,两个或多个事务互相等待对方释放资源,导致系统无法继续执行。在MySQL的InnoDB存储引擎中,死锁检测机制能自动识别并解决这种情况,通常通过回滚其中一个事务来打破循环。 当发生死锁时,MySQL服务器会...

    大牛出手MySQL死锁深入分析

    MySQL死锁问题是数据库管理员和开发者在工作中经常遇到的一种并发问题,尤其在面试中也常作为考核候选人的一个知识点。本文将以一个具体的死锁案例为背景,深入分析MySQL中的死锁机制,探讨死锁的成因,并提出预防...

    MySQL死锁的产生原因以及解决方案

    本文将探讨MySQL死锁的产生原因以及解决方案。 **死锁的产生原因** 1. **资源竞争与顺序依赖**:当两个事务A和B分别持有对方需要的资源,A等待B释放资源,B也在等待A释放资源,就会形成死锁。例如,事务A锁定表A后...

    避免或最小化mysql死锁deadlock一些方法.docx

    在 MySQL 中,死锁是指两个或多个事务之间的资源竞争,导致事务无法继续执行的情况。死锁可能会导致数据库性能下降,甚至整个数据库无法访问。为了避免或最小化 MySQL 死锁,需要了解死锁的原因和解决方法。 死锁的...

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

    当事务A持有资源R1,并等待事务B持有的资源R2解锁时,同时事务B持有资源R2并等待事务A持有的资源R1解锁时,就会形成一个死锁的循环等待,导致事务无法继续执行。 ### 死锁的类型 在MySQL中,死锁主要分为两种类型:...

    MySQL死锁1

    首先,让我们看看导致MySQL死锁的一些常见场景。第一种情况是两个事务按照相反的顺序锁定数据行。例如,事务A先锁定了行1,然后尝试锁定行2,而事务B则先锁定了行2,然后尝试锁定行1。由于双方都在等待对方释放资源...

    MySQL 死锁产生原因和解决办法

    死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的状态,且若无外力介入,这些进程将无法继续推进。死锁的关键在于:不同会话(Session)加锁的顺序不一致。 在MySQL中,InnoDB存储引擎...

    论底层源码的重要性,解决mysql死锁问题

    总的来说,理解数据库底层源码和操作对于解决MySQL死锁至关重要。项目经理不仅需要关注代码层面的问题,还应具备数据库管理和调优的知识,以便更好地维护系统稳定性和用户满意度。在遇到类似问题时,应进行详细的...

Global site tag (gtag.js) - Google Analytics