测量实际的 MySQL 查询时间
Posted
技术标签:
【中文标题】测量实际的 MySQL 查询时间【英文标题】:Measuring actual MySQL query time 【发布时间】:2012-07-01 18:12:37 【问题描述】:如何在不测量等待锁定释放等的时间的情况下测量查询的执行时间?我唯一的想法是不断测量相同的查询并记录最快的时间。
【问题讨论】:
【参考方案1】:使用
启动分析器SET profiling = 1;
然后执行您的查询。
有
SHOW PROFILES;
您会看到探查器具有统计信息的查询列表。最后,您选择要检查的查询
SHOW PROFILE FOR QUERY 1;
或您查询的任何数字。
你得到的是一个列表,其中确切地在查询期间花费了多少时间。
更多信息在manual.
【讨论】:
这太棒了!你知道这是否很慢?即我可以将它添加到我的包装类中,以便为我网站上运行的每个查询执行吗? 从来没想过。你为什么想这么做?通常这只是为了开发,我猜。如果您想知道哪些查询很慢,请查看您的慢查询日志。 dev.mysql.com/doc/refman/5.1/en/slow-query-log.html 因为不同用户的查询花费的时间不同。 slow-query-log 似乎在计算它等待锁释放的时间 不是真的。等待锁也只是另一个查询缓慢的一个症状。我建议,在你的慢查询日志中选择查询,使用分析器运行它们,看看它们在哪里花费了这么多时间。然后,如果可能的话,改进它们。如果查询在sending data
上花费大量时间,则相应地添加索引、重写它们或减少读取的数据。或者任何提高性能的方法。我认为让用户知道他们为什么要等这么久是没有意义的。他们实际上不在乎。
我并不是要向用户显示分析结果。我只是想为自己的目的实时捕捉并存储它【参考方案2】:
接受的答案变得无效...
SHOW PROFILE[S]
自 MySQL 5.6.7 起已弃用,并将在未来的 MySQL 版本中删除。改用性能模式;见http://dev.mysql.com/doc/refman/5.6/en/performance-schema-query-profiling.html
【讨论】:
如果 Profile 为您提供了比“发送数据”更有用的东西,那么您就中了彩票。 我正在使用 5.7.19 并且show profiles
仍然可以正常工作
@SivaPraveen - 好的,现在它仍然有效,但是“......将被删除......”以上是关于测量实际的 MySQL 查询时间的主要内容,如果未能解决你的问题,请参考以下文章
MySQL Workbench 查询统计:服务器和客户端时间?
Mysql性能分析工具 SHOW PROFILE SHOW STATUS