如何查看实时的MySQL查询?

16 浏览
0 Comments

如何查看实时的MySQL查询?

我该如何在Linux服务器上跟踪MySQL查询?

例如我希望建立一种监听器,然后请求网页并查看引擎执行的所有查询,或者只查看在生产服务器上运行的所有查询。我该怎么做?

admin 更改状态以发布 2023年5月23日
0
0 Comments

你可以运行MySQL命令SHOW FULL PROCESSLIST;来查看任何时候正在处理的查询,但这可能不能实现你希望的目的。

最好的方法是通过触发器来获得历史记录,而无需修改使用服务器的每个应用程序。您可以设置触发器,以便每个运行的查询结果都被插入到某种历史记录表中,然后创建一个单独的页面来访问此信息。

请注意,这可能会显著减慢服务器上的所有内容,因为除了每个单独查询之外,还要添加额外的INSERT


编辑:另一个选择是通用查询日志,但将其写入平面文件会消除很多灵活性,特别是实时显示。如果你只想要一个简单、易于实现的方式来查看发生了什么,启用GQL然后在日志文件上运行tail -f就可以了。

0
0 Comments

你可以非常容易地将每个查询记录到日志文件中:

mysql> SHOW VARIABLES LIKE "general_log%";
+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| general_log      | OFF                        |
| general_log_file | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+
mysql> SET GLOBAL general_log = 'ON';

执行你的查询(在任何数据库上)。使用Grep或其他方式检查/ var / run / mysqld / mysqld.log

然后不要忘记

mysql> SET GLOBAL general_log = 'OFF';

否则性能将急剧下降并且你的磁盘将被填满!

0