:如何查看MySQL数据库的锁信息

:如何查看MySQL数据库的锁信息

概述

本文主要介绍如何查看MySQL数据库的锁信息。

详细信息

阿里云提醒您:

如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。

如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。

如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

以下是各个版本的MySQL引擎查询锁信息的SQL语句:

5.6/5.7版本

SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, left(r.trx_query, 20) waiting_query, concat( concat(lw.lock_type, ' '), lw.lock_mode ) waiting_for_lock, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, left(b.trx_query, 20) blocking_query, concat( concat(lb.lock_type, ' '), lb.lock_mode ) blocking_lock 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 lw ON lw.lock_trx_id = r.trx_id INNER JOIN information_schema.innodb_locks lb ON lb.lock_trx_id = b.trx_id;

返回的字段信息如下。

说明:

waiting_trx_id:等待事务的ID。

waiting_thread:MySQL中的线程ID,即show processlist显示的结果。

waiting_query:等待锁的语句。

blocking_trx_id:正在阻止等待锁的事务的ID。

8.0版本

SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM PERFORMANCE_SCHEMA.data_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_engine_transaction_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_engine_transaction_id;

返回的字段信息如下。

8.0版本进阶查询锁信息

使用此方法查出的数据较多,在行锁很多的情况下,返回的结果集会很大,请谨慎使用。

SELECT r.trx_id AS waiting_trx_id, r.trx_mysql_thread_id AS waiting_thread, LEFT(r.trx_query, 20) AS waiting_query , concat(concat(lw.lock_type, ' '), lw.lock_mode) AS waiting_for_lock , b.trx_id AS blocking_trx_id, b.trx_mysql_thread_id AS blocking_thread, LEFT(b.trx_query, 20) AS blocking_query , concat(concat(lb.lock_type, ' '), lb.lock_mode) AS blocking_lockFROM performance_schema.data_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.BLOCKING_ENGINE_TRANSACTION_ID INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.REQUESTING_ENGINE_TRANSACTION_ID INNER JOIN performance_schema.data_locks lw ON lw.ENGINE_TRANSACTION_ID = r.trx_id INNER JOIN performance_schema.data_locks lb ON lb.ENGINE_TRANSACTION_ID = b.trx_id;

返回的字段信息如下。

相关文档

MySQL 8.0版本查看锁定信息

适用于

云数据库RDS MySQL版

🎯 相关推荐

泰国旅游预算指南,去泰国旅游需要准备多少费用?
‎每周热门 100 首:日本
best365官网苹果下载

‎每周热门 100 首:日本

📅 10-28 👁️ 6095
猫咪一直发出低吼是怎么回事?
日博best365

猫咪一直发出低吼是怎么回事?

📅 07-21 👁️ 8852
[我爱世界杯]完整版 20221123 16:30
365bet真人体育

[我爱世界杯]完整版 20221123 16:30

📅 08-04 👁️ 4657
途家民宿怎么加入平台
365bet真人体育

途家民宿怎么加入平台

📅 10-20 👁️ 697
qq打卡现在最多多少天
日博best365

qq打卡现在最多多少天

📅 10-07 👁️ 9604