1

我正在对查询进行性能分析,并且需要能够看到比最后 100 个查询更多的内容。Max profiling_history_size 为 100,但我看到调试工具以某种方式设法保存超过最后 100 个查询(例如,django 调试工具)。

我愿意

SET profiling=1;
set profiling_history_size = 100;
SHOW PROFILES;

如果我可以将记录移动到另一个表中,那就太好了。或者也许我需要完全寻找其他地方?

我的程序多次运行相同的查询,所以我真正想要的是执行特定查询的所有时间的汇总。完成所有查询后,我打算进行某种 GROUP BY,但也许还有其他地方可以查看?(我并不是要问 2 个问题,但也许知道我最终需要什么会改变上述问题的答案。)

4

2 回答 2

0

如果您需要超过最后 100 个查询的信息,您只需每 100 个查询收集一次现有数据。我已经在 PHP PDO 中实现了后一个特性。

https://github.com/gajus/doll

这是一个应用层解决方案。

于 2013-05-18T18:20:44.903 回答
0

在 MySQL 5.6 中,语句(查询)由性能模式检测。

你得到一个查询所花费的时间,加上更多的属性,比如返回的行数等,你得到了许多不同的聚合。

http://dev.mysql.com/doc/refman/5.6/en/statement-summary-tables.html

http://dev.mysql.com/doc/refman/5.6/en/performance-schema-statements-tables.html

一个特别有用的聚合是按摘要聚合,将几个“相似查询”分组在一起,其中相似表示相同的结构但可能有不同的文字值(“select * from t1 where id = 1”和“select * from t1 where id = 2" 将被聚合为 "select * from t1 where id = ?")

于 2012-08-07T19:52:01.513 回答