如何从SHOW PROCESSLIST看完整的查询


296

当我发出SHOW PROCESSLIST查询时,信息列仅返回正在运行的SQL查询的前100个字符。

是否可以更改Mysql配置或发出其他类型的请求以查看完整查询(我正在查看的查询超过100个字符)

Answers:


482
SHOW FULL PROCESSLIST

如果不使用FULL,则“该Info字段中仅显示每个语句的前100个字符”

使用phpMyAdmin时,还应该单击“全文”选项(结果表左上角的“←T→”)以查看未删节的结果。


3
似乎phpmyadmin对此并不在意,但仍显示被截断的信息。
giorgio79

@ giorgio79:如果我没记错的话,phpMyAdmin会截断所有字符串结果。不过,距离我从事任何Web开发已经四年了,所以我很可能会误会。
James McNellis 2012年

2
我看到即使使用,查询也会在一定长度后被截断SHOW FULL PROCESSLIST。我能以某种方式使其更饱满吗?
wizonesolutions 2014年

该命令最后SHOW FULL PROCESSLIST需要使用分号;吗?
拉基布尔·哈克

1
@ R.Haq如果这是您要执行的唯一查询,则不需要分号。如果要执行多个查询,则确实需要在每个查询后加上分号。
朱利奥·加西亚

85

Show Processlist从另一个表中获取信息。这是获取数据并查看包含整个查询的“ INFO”列的方法:

select * from INFORMATION_SCHEMA.PROCESSLIST where db = 'somedb';

您可以根据需要添加任何条件或忽略。

查询的输出结果为:

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| ID    | USER | HOST            | DB     | COMMAND | TIME | STATE     | INFO                                                     |
+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
|     5 | ssss | localhost:41060 | somedb | Sleep   |    3 |           | NULL                                                     |
| 58169 | root | localhost       | somedb | Query   |    0 | executing | select * from sometable where tblColumnName = 'someName' |

12
这可能是最有用的答案。
dr_

我的信息列显示COMMIT。您知道如何查看有关实际查询的更多详细信息吗?
m.spyratos

本地主机:41060,41060代表什么?有什么猜想吗?
Farveen Hassan,

12

我只是读过MySQL文档SHOW FULL PROCESSLIST默认情况下仅列出线程当前用户连接

引用MySQL SHOW FULL PROCESSLIST文档:

如果您具有PROCESS特权,则可以看到所有线程。

因此,您可以Process_privmysql.user表格中启用该列。记得FLUSH PRIVILEGES之后执行:)



10

如果要在shell会话上继续获取更新的进程(在示例中为2秒),而不必手动与之交互,请使用:

watch -n 2 'mysql -h 127.0.0.1 -P 3306 -u some_user -psome_pass some_database -e "show full processlist;"'

唯一的坏处show [full] processlist是您无法过滤输出结果。另一方面,发出SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST开放的可能性从输出中删除您不希望看到的任何内容:

SELECT * from INFORMATION_SCHEMA.PROCESSLIST
WHERE DB = 'somedatabase'
AND COMMAND <> 'Sleep'
AND HOST NOT LIKE '10.164.25.133%' \G
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.