MySQL 查询时间每次调优都不同

MySQL 查询时间每次调优都不同

我正在针对我的慢查询调整 SQL 查询时间,但每次得到的时间都不同,因此我无法评估我的优化解决方案。

例如,我运行查询select * from abc where abc.status in (x,y,z) and abc.scale>123;三次,得到的结果时间是 5s、11s、9s。

我已经关闭了查询缓存。如何才能获得一个干净的沙盒来调整我的慢速查询?

答案1

最有可能的是,服务器正在后台执行其他不同的事情。MySQL 查询受 IO 的影响很大,并且以其他进程在机器上执行 IO 工作的形式出现的干扰可能会显著改变查询时间。

如果您想要可重复的基准测试,请确保在独立的服务器上运行它。

答案2

除了拥有一个纯净、未受污染的环境之外,另一种选择是反复运行查询(例如数百次)并对结果进行统计分析。关键是隔离任何混淆变量(在同一台机器上运行测试,使用相同的脚手架代码,并且运行的其他任务没有任何偏差(我知道这很难)。然后,您可以得出关于某个查询是否优于其他查询的概率结论(尽管量化确切的改进充满危险)。

或者您也可以直接使用EXPLAIN <query>,它将向您显示一个查询计划,并让您很好地了解两个查询中哪个“更好”。

相关内容