`

通过information_schema查询MySQL的锁定状态

阅读更多

 

通过information_schema查询MySQL的锁定状态。

注意:MySQL版本必须>=5.1

如果看不到INNODB_LOCKS表,请用SHOW VARIABLES检查innodb_version变量。如果没有看到这个变量,说明你还没有使用InnoDB插件,你需要他。如果你看到了这个变量但没有那些表,那么你需要确保服务器配置文件的plugin_load设置中明确包括了那些表,详情请查阅MySQL用户手册。

 

下面的查询显示了谁阻塞和谁在等待,以及等待了多久:

 

SELECT  
    r.trx_id waiting_trx_id,  
    r.trx_mysql_thread_id waiting_thread,  
    TIMESTAMPDIFF(  
        SECOND,  
        r.trx_wait_started,  
        CURRENT_TIMESTAMP  
    ) wait_time,  
    r.trx_query waiting_query,  
    l.lock_table waiting_table_lock,  
    b.trx_id blocking_trx_id,  
    b.trx_mysql_thread_id blocking_thread,  
    SUBSTRING(  
        p. HOST,  
        1,  
        INSTR(p. HOST, ':') - 1  
    ) blocking_host,  
    SUBSTRING(p. HOST, INSTR(p. HOST, ':') + 1) blocking_port,  
  
IF (p.COMMAND = 'Sleep', p.TIME, 0) idel_in_trx,  
 b.trx_query blocking_query  
FROM  
    information_schema.INNODB_LOCK_WAITS w  
INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.blocking_trx_id  
INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id  
INNER JOIN information_schema.INNODB_LOCKS l ON w.requested_lock_id = l.lock_id  
LEFT JOIN information_schema. PROCESSLIST p ON p.ID = b.trx_mysql_thread_id  
ORDER BY  
    wait_time DESC\G

 

 

下面查询显示了多少查询被哪些线程阻塞:

 

SELECT CONCAT('thread ' , b.trx_mysql_thread_id , ' from ' , p.host) as who_blocks,
       IF(p.command = "Sleep", p.time, 0 ) as idle_in_trx,
       MAX(TIMESTAMPDIFF(SECOND, r.trx_wait_started, NOW() )) as max_wait_time,
       COUNT(*) as num_waiters
FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS AS w
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX  AS b ON b.trx_id = w.blocking_trx_id
INNER JOIN INFORMATION_SCHEMA.INNODB_TRX  AS r ON b.trx_id = w.requesting_trx_id
LEFT  JOIN INFORMATION_SCHEMA.PROCESSLIST AS p ON p.id = b.trx_mysql_thread_id
GROUP BY who_blocks ORDER BY num_waiters DESC\G

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    MySQL5.7-information

    ### MySQL 5.7 Information Schema概述 MySQL 5.7 中的 `Information Schema` 是一个虚拟数据库,存储了关于数据库元数据(如表定义、列属性等)的信息。这一架构对于系统管理员和开发者来说非常重要,因为它提供了...

    mysql经典性能查询SQL

    5. **查看当前锁状态**:`information_schema.innodb_locks`用于显示当前所有的锁定信息。 6. **查看锁等待情况**:`information_schema.innodb_lock_waits`展示被阻塞的事务和它们等待的锁。 7. **详细锁等待信息...

    mysql死锁解决

    可以通过查询`INFORMATION_SCHEMA.INNODB_TRX`表来查看当前活跃的事务信息,包括事务的状态、开始时间、等待锁的信息等。 示例查询语句: ```sql SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; ``` 该查询可以...

    批量杀死MySQL连接的四种方法详解

    在MySQL数据库管理中,有时需要批量杀死(终止)某些连接,例如当系统资源被大量消耗,或者需要清理无响应的查询时。以下介绍四种有效的方法来实现这一目标: 方法一: 这种方法利用`information_schema....

    MySQL 5.1中文手冊

    2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL ...

    mysql-8.0.33-winx64.zip(mysql安装包)

    - **性能监控**:通过性能_schema和information_schema数据库,监控MySQL的运行状态,调整配置以优化性能。 - **权限管理**:合理分配用户权限,遵循最小权限原则,防止不必要的安全风险。 - **索引优化**:根据...

    mysql官方中文参考手册

    2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL ...

    MySQL 5.1参考手册 (中文版)

    2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL ...

    MySQL 5.1参考手册

    2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL ...

    MySQL 5.1参考手册中文版

    2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动...

    MySQL 5.1官方简体中文参考手册

    2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL ...

    MYSQL中文手册

    2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动...

    数据治理__从Oracle的SQL优化到MySQL的SQL优化.pdf

    Oracle的动态性能视图(如V$视图)提供了深入的系统状态和性能数据,而MySQL的相关信息则主要通过SHOW命令或INFORMATION_SCHEMA查询获取。 在SQL优化上,Oracle和MySQL的执行计划机制有所不同。Oracle的执行计划...

    mysql 清碎片

    WHERE table_schema NOT IN ('information_schema', 'mysql') AND data_free > 0; ``` 此查询返回的结果中,`data_free`列显示了每个表中未使用的空间大小(单位为字节),可以帮助我们识别哪些表存在较多的碎片...

    MySQL5.7中 performance和sys schema中的监控参数解释(推荐)

    MySQL 5.7引入了对性能监控的重大改进,特别是通过performance schema和sys schema的优化,使得数据库管理员能够更深入地了解系统性能,并有效地进行故障排查和优化。以下是对这两个关键特性的详细介绍: **1. ...

    MySQL5.1参考手册官方简体中文版

    2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL ...

    前后端分离,服务端渲染的个人博客,基于 Vue、 Nuxt、Nodejs、Nestjs、Mysql、.zip

    information_schema:提供关于所有数据库、表、列、索引等元数据信息,是查询数据库结构的标准接口。 mysql:存储MySQL自身的系统信息,如用户权限、服务器配置、事件调度等。 performance_schema:自MySQL 5.5...

Global site tag (gtag.js) - Google Analytics