欢迎光临
我们一直在努力

MySQL 5.7获取指定线程正在执行SQL的执行计划信息

获取指定线程正在执行SQL的执行计划信息,可以使用下面语句;
当某个线程执行SQL消耗了很长的时间,可以使用这个语句找到正在执行大SQL的执行计划,在性能诊断上很有用。

mysql> show processlist;
+—-+——+———–+——+———+——+————–+———————————————-+
| Id | User | Host      | db   | Command | Time | State        | Info                                         |
+—-+——+———–+——+———+——+————–+———————————————-+
| 17 | root | localhost | NULL | Query   |    0 | starting     | show processlist                             |
| 18 | neo  | localhost | fire | Query   |  257 | Sending data | select count(*) from t1 join t2 on t1.a=t2.a |
+—-+——+———–+——+———+——+————–+———————————————-+
2 rows in set (0.00 sec)

mysql> EXPLAIN FOR CONNECTION 18;
+—-+————-+——-+————+——-+—————+———-+———+———–+——–+———-+————————–+
| id | select_type | table | partitions | type  | possible_keys | key      | key_len | ref       | rows   | filtered | Extra                    |
+—-+————-+——-+————+——-+—————+———-+———+———–+——–+———-+————————–+
|  1 | SIMPLE      | t1    | NULL       | index | idx_t1_a      | idx_t1_a | 5       | NULL      | 392945 |   100.00 | Using where; Using index |
|  1 | SIMPLE      | t2    | NULL       | ref   | idx_t2_a      | idx_t2_a | 5       | fire.t1.a |      1 |   100.00 | Using index              |
+—-+————-+——-+————+——-+—————+———-+———+———–+——–+———-+————————–+
2 rows in set (0.00 sec)

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。