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

例如,我希望设置某种侦听器,然后请求一个网页并查看引擎执行的所有查询,或者只查看生产服务器上运行的所有查询.我该怎么做?

推荐答案

您可以运行MySQL命令SHOW FULL PROCESSLIST;来查看在任何给定时间正在处理哪些查询,但这可能无法实现您的期望.

获取历史记录而不必修改使用服务器的每个应用程序的最佳方法可能是通过触发器.您可以设置触发器,以便运行的每个查询都会将查询中的结果插入某种历史记录表中,然后创建一个单独的页面来访问这些信息.

但请注意,这可能会大大降低服务器上的速度,因为在每个查询的顶部都会额外添加INSERT个查询.


编辑:另一种 Select 是General Query Log,但将其写入平面文件将消除许多显示灵活性的可能性,尤其是实时显示.如果你只是想用一种简单、易于实现的方法来查看发生了什么,那么启用GQL,然后在日志(log)文件上运行tail -f就可以了.

Mysql相关问答推荐

含有子查询的MySQL函数出现语法错误

无法确定查询逻辑

从表中动态删除所有空列

使用不同的 where 列进行子 Select

在 MySQL 中,如何对 LIKE 查询进行批量更新,删除字符?

为什么order by子句可以利用索引?

在表中找到最大值,然后分别显示SQL组和每个SQL组中的最大值计数

提取 MySQL 5.7 连续值的差异

MySQL REGEXP 在没有 BINARY 模式的情况下区分大小写?

在 MySQL 中使用三个表进行计算

MySQL使用多列 Select 重复记录

MySQL:将日期时间插入其他日期时间字段

MySQL PHP - Select WHERE id = array()?

这是将表单数据插入 MySQL 数据库的安全方法吗?

MySQL - 使一对值唯一

如何在 MySQL 上一次删除一系列记录?

我可以在单个 Amazon RDS 实例上创建多少个数据库

第 1 行的 CSV 输入中的列数无效错误

使用 MySql,我可以对列进行排序但最后有 0 吗?

MySQL DAYOFWEEK() - 我的一周从星期一开始