GreatSQL社区

搜索

[已解决] MySQL 元数据锁等待时定位持锁SQL的方法

482 4 2023-3-15 13:53
需求:

执行DDL发生元数据锁等待时需要定位持有锁的SQL
否则直接kill可能的连接时依然有风险

背景:

线上环境未开启 wait/lock/metadata/sql/mdl,因此无法通过 performance_schema.metadata_locks 数据表进行查询

这种情况下,如何快速定位持锁SQL?

个人理解:

1)information_schema.processlist 数据表查询同一张表的慢SQL,但是可能查不到SQL
2)information_schema.innodb_trx 数据表查询同一张表的未提交事务,但是可能查不到SQL
3)performance_schema.events_statements_current 数据表中查询SQL,但是可能查不到SQL
4)performance_schema.events_statements_history 数据表中查询SQL,但是可能查到多条SQL

请教下,有没有更好的办法可以快速定位持锁SQL?

全部回复(4)
yejr 2023-3-15 16:05:56
线上环境未开启 wait/lock/metadata/sql/mdl,因此无法通过 performance_schema.metadata_locks 数据表进行查询
====
5.7版本后可以在线动态开启,还是开起来吧,真不想用了,再关掉
鸟山明 2023-3-15 16:16:41
yejr 发表于 2023-3-15 16:05
线上环境未开启 wait/lock/metadata/sql/mdl,因此无法通过 performance_schema.metadata_locks 数据表进行 ...

领导老是让评估开启后的风险
yejr 2023-3-16 18:18:51
鸟山明 发表于 2023-3-15 16:16
领导老是让评估开启后的风险

0风险,且有极大收益
真担心的话,可以阶段性开启,用完就关
lizibin 2023-3-20 17:18:50
如果开启了mdl instrument,sys有个视图可用
select * from sys.schema_table_lock_waits
持有锁、阻塞线程一目了然
鸟山明

3

主题

0

博客

10

贡献

新手上路

Rank: 1

积分
17

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-4-26 19:23 , Processed in 0.020636 second(s), 18 queries , Redis On.
快速回复 返回顶部 返回列表