2012-08-07 28 views
0

我是性能分析我的查詢,需要能夠看到比最後100個查詢更多的內容。最大profiling_history_size是100,但我看到調試工具以某種方式管理比最後100個查詢節省更多(例如,django調試工具)。MySQL:SHOW PROFILES - 希望看到超過100條記錄

我做

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

這將是很好,如果我能夠繼續前進記錄到另一個表。或者,也許我需要在其他地方一起看?

我的程序運行相同的查詢很多次,所以我真正想要的是一個特定查詢執行的所有時間的聚合。一旦我有了所有疑問,我就會做一些GROUP BY,但也許還有其他地方需要注意? (我不是故意問2個問題,但可能知道我最終需要改變上述問題的答案。)

回答

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 =?」)

0

如果您需要超過最近100次查詢的信息,您只需要每100次查詢就收集現有數據。我在PHP PDO中實現了後者功能。

https://github.com/gajus/doll

這是一個應用層解決方案。