重复的mysql查询会改变执行时间

重复的mysql查询会改变执行时间

我注意到,当我在我的 mysql 机器上连续多次执行查询时,执行时间在第一次执行后会下降并发生显着变化(40/50%),并且没有激活查询缓存并且没有其他进程干扰。

我怀疑其中涉及一些“隐藏”的缓存,比如临时表,特别是当查询涉及多个子查询时,或者可能是一些磁盘 IO 缓存,但我真的不明白。

由于有时我需要微调某些查询,所以我不知道如何处理这个问题。我通常会多次运行查询并消除峰值

我想知道是否有更好的解决方案...

答案1

操作系统使用未使用的内存作为缓存。为什么这是一个问题?

编辑

要获取查询操作不同部分所花费的时间,可以使用以下方式设置分析

set profiling=1;

show profilesshow profile for query <n>在运行查询后显示配置文件 。

答案2

正如前面提到的,请谨慎对待您的优化目标:当您优化重复运行的查询时,您将获得短时间内多次运行的查询的最佳结果(但您可能会为此使用查询缓存)。

通过重复查询,您可以“预热”操作系统磁盘缓存,因此磁盘寻道不再计入您的时间。当需要在繁忙的磁盘上执行多次寻道操作时,这可能会严重恶化您在实际场景中的结果。

附注:您可能还想尝试“explain select...”,它将告诉您有关已使用和可用的索引的信息。在大多数情况下,这将帮助您确定要创建哪些附加索引或如何重写查询。

相关内容