首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕获运行在MySQL服务器上的查询?

如何捕获运行在MySQL服务器上的查询?
EN

Server Fault用户
提问于 2012-02-10 22:26:06
回答 7查看 35.8K关注 0票数 14

我们正在尝试进行一些服务器性能调试,我想捕捉几分钟内在我们的MySQL服务器上运行的查询的快照。

我对MySQL的SHOW FULL PROCESSLIST很熟悉,但是我希望能够通过命令行运行它,这样我就可以将它转储到一个文件中并进行处理。

有没有办法将这个查询输出到一个文件,并让它每隔一秒运行一次?

是否有更好的方法来捕获正在运行的所有查询?

请注意,我对慢速查询并不感兴趣(我熟悉慢速查询日志)。

EN

回答 7

Server Fault用户

回答已采纳

发布于 2012-02-14 16:52:46

我会使用慢速查询日志。如果您设置long_query_time = 0,它将捕获所有查询,而不仅仅是那些缓慢的查询。

它还捕获所有查询,这里提到的TCP嗅探技术并非如此;这些查询不会捕获通过套接字执行的查询。同样用于观看节目PROCESSLIST;您将错过快速运行的查询。

如果您想通过进程列表或TCP流量捕获查询,我建议使用Percona的pt查询摘要。它可以为您轮询处理列表(如果您自己捕获一堆处理列表的示例,这很难理解结果),它可以解释MySQL的TCP协议,因此您可以获取一些TCP流量并对其进行分析。当然,它也是有史以来最好的查询聚合器/分析器/记者,但是在捕获查询之后,您没有说出要对它们做什么。

票数 10
EN

Server Fault用户

发布于 2012-02-10 22:41:15

最健壮的方法是使用“通用查询日志”,它将捕获所有查询:http://dev.mysql.com/doc/refman/5.1/en/query-log.html

您没有指定MySQL服务器版本,但是如果您有5.1.12或更高版本,则可以通过SQL使用全局变量启用和禁用该版本;有关详细信息,请参阅文档。

票数 13
EN

Server Fault用户

发布于 2012-02-10 22:32:58

当然:

代码语言:javascript
复制
mysqladmin -u root -p -i 1 --verbose processlist > /tmp/pl.out

干杯

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/358978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档