mysql 锁查询_mysql查询锁

本文介绍了一种通过SQL查询来获取InnoDB引擎中锁等待情况的方法,包括阻塞线程ID、锁定表、锁定类型等信息,并展示了如何计算等待时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select  IFNULL(wt.trx_mysql_thread_id,1) BLOCKING_THREAD_ID,

t.trx_mysql_thread_id THREAD_ID,

CONCAT(p.user,'@',p.host) USER,

l.lock_table LOCK_TABLE,

l.lock_index LOCKED_INDEX,

l.lock_type LOCK_TYPE,

l.lock_mode LOCK_MODE,

CONCAT(

FLOOR(HOUR(TIMEDIFF(now(), t.trx_wait_started)) / 24), 'day ',

MOD(HOUR(TIMEDIFF(now(), t.trx_wait_started)), 24), ':',

MINUTE(TIMEDIFF(now(), t.trx_wait_started)), ':',

second(TIMEDIFF(now(), t.trx_wait_started))) AS WAIT_TIME,

t.trx_started TRX_STARTED,

t.trx_isolation_level TRX_ISOLATION_LEVEL,

t.trx_rows_locked TRX_ROWS_LOCKED,

t.trx_rows_modified TRX_ROWS_MODIFIED,

p.info SQL_TEXT

from   INFORMATION_SCHEMA.INNODB_TRX t

LEFT  JOIN information_schema.innodb_lock_waits w on t.trx_id = w.requesting_trx_id

LEFT  JOIN information_schema.innodb_trx wt       on wt.trx_id = w.blocking_trx_id

INNER JOIN information_schema.innodb_locks l      on l.lock_trx_id = t.trx_id

INNER JOIN information_schema.processlist p       on t.trx_mysql_thread_id = p.id

ORDER BY 1

### 关于 MySQL 查询表状态 在 MySQL 数据库中,可以通过特定的查询语句来查看当前数据库中的表状态。这些查询可以帮助管理员了解哪些表被定以及谁持有这些。 #### 使用 `INFORMATION_SCHEMA` 查看表信息 可以利用 `INFORMATION_SCHEMA.INNODB_LOCKS` 和 `INFORMATION_SCHEMA.INNODB_LOCK_WAITS` 表获取 InnoDB 存储引擎下的信息[^1]。以下是具体的 SQL 查询: ```sql SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_pid, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_pid, CONCAT('KILL QUERY ', b.trx_mysql_thread_id) AS sql_kill_blocking_query, 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; ``` 此查询返回等待事务和阻塞事务的信息,帮助识别死或其他冲突的情况[^2]。 #### 使用 `SHOW OPEN TABLES` 命令 如果需要检查 MyISAM 或其他存储引擎是否有表处于定状态,则可使用如下命令: ```sql SHOW OPEN TABLES WHERE In_use > 0; ``` 该命令会显示正在使用的表及其的状态。其中 `In_use` 列表示有多少线程正占用或已定该表[^3]。 #### 结合性能模式 (Performance Schema) 对于更详细的分析,还可以启用并配置 Performance Schema 来监控事件。通过访问 `performance_schema.data_locks` 及相关视图可以获得全面的数据详情[^4]。 ```sql SELECT * FROM performance_schema.data_locks; ``` 以上方法适用于不同场景下诊断 MySQL问题,并提供相应的解决方案依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值