GreatSQL社区

搜索

[已解决] 如何在没有开启ps.metadata_locks快速判断哪个会话持有FTWRL锁

717 4 2022-10-31 11:40
本帖最后由 bedrock 于 2022-10-31 11:54 编辑

本地实验
版本:5.7.38
已被锁,假设有几千个会话,未开启ps.metadata_locks,如何快速定位持有FTWRL语句id
注:ps.metadata_locks 默认是被关闭的,当数据库已经被 FTWRL 时
开启语句:UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME ='wait/lock/metadata/sql/mdl'; 也会被阻塞


会话一

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

会话2,被阻塞

mysql> delete from test.limit_test where id=100001;


会话1

mysql> show full processlist\G
*************************** 1. row ***************************
     Id: 1
   User: event_scheduler
   Host: localhost
     db: NULL
Command: Daemon
   Time: 331949
  State: Waiting on empty queue
   Info: NULL
*************************** 2. row ***************************
     Id: 38
   User: root
   Host: localhost
     db: test
Command: Query
   Time: 0
  State: starting
   Info: show full processlist
*************************** 3. row ***************************
     Id: 39
   User: canal
   Host: alltest:33512
     db: canal_manager
Command: Sleep
   Time: 35
  State:
   Info: NULL
*************************** 4. row ***************************
     Id: 40
   User: root
   Host: localhost
     db: NULL
Command: Query
   Time: 5
  State: Waiting for global read lock
   Info: delete from test.limit_test where id=100001
4 rows in set (0.00 sec)


全部回复(4)
yejr 2022-10-31 11:43:52
现场的SHOW PROCESSLIST发一下
bedrock 2022-10-31 11:49:31
yejr 发表于 2022-10-31 11:43
现场的SHOW PROCESSLIST发一下

叶老师,这个是我自己本地的实验,为了模拟下生产上假如发生这种情况怎么处理,几千个会话是假设的
bedrock 2022-10-31 11:51:31
yejr 发表于 2022-10-31 11:43
现场的SHOW PROCESSLIST发一下

补充在正文了
yejr 2022-11-1 16:49:01

并没看到开启语句被阻塞啊
bedrock

5

主题

0

博客

22

贡献

新手上路

Rank: 1

积分
29

2022年度求知人物月度求知人物

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-11-22 13:37 , Processed in 0.018871 second(s), 14 queries , Redis On.
快速回复 返回顶部 返回列表