我有一个查询,第一次执行大约需要 1 秒,再次运行相同的查询需要 15-50 毫秒。EXPLAIN 输出之间的唯一区别是第二次执行包含很多Buffers: shared hit
可能(如果我错了请纠正我)导致显着加速的原因。
所以我想知道,当人们谈论需要 x 毫秒的查询时,他们通常指的是第一次执行所花费的时间吗?
您是否关心缓存后实际上非常快的慢速查询?这假定您的应用程序需要合理的响应时间(例如电子商务、实时分析等)。
我正在使用 PostgreSQL 9.5,但我打算问一些足够通用的问题以广泛使用。
如果记者有任何严谨的想法,我希望报告中包含热缓存/冷缓存信息。否则这就像说一辆汽车的价格为y美元,却没有说明其中包括哪些选项、保修、服务或税费。同样,我希望看到它说明后续测试是在相同条件下进行的,以及如何实现的。在不太正式的讨论中,我会假设热缓存,因为这是通常的操作条件,除非另有说明。
这两个条件强调主机配置的不同方面。对于冷缓存,磁盘子系统的影响更大。对于热缓存,更多的是内存压力和查询计划的效率。然而,在现实场景中很难找到纯粹是其中之一的工作负载。
例如,SQL Server在计算查询计划成本时采用冷缓存。