MySQL 元数据锁等待时定位持锁SQL的方法
需求:执行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?
线上环境未开启 wait/lock/metadata/sql/mdl,因此无法通过 performance_schema.metadata_locks 数据表进行查询
====
5.7版本后可以在线动态开启,还是开起来吧,真不想用了,再关掉 yejr 发表于 2023-3-15 16:05
线上环境未开启 wait/lock/metadata/sql/mdl,因此无法通过 performance_schema.metadata_locks 数据表进行 ...
领导老是让评估开启后的风险{:5_216:} 鸟山明 发表于 2023-3-15 16:16
领导老是让评估开启后的风险
0风险,且有极大收益
真担心的话,可以阶段性开启,用完就关 如果开启了mdl instrument,sys有个视图可用
select * from sys.schema_table_lock_waits
持有锁、阻塞线程一目了然
页:
[1]