【发布时间】:2019-05-11 09:32:43
【问题描述】:
我在 PostgreSQL 中有一个查询(而不是一个 func 调用),它通常会返回 5-6 秒。我认为这种情况发生在 90-59% 的情况下。有时虽然同样的 func 调用需要 10-20 分钟甚至 1-2 小时。在这种“较慢情况”中传递给 func 的参数与在“较快情况”中相同。
这可能是什么原因造成的?即使参数完全相同,PostgreSQL 是否有可能选择不同的执行计划?
因为我会被问及整体服务器负载...我认为这无关。我相信我已经看到我的 func 调用很慢的情况,即使服务器上没有任何显着的额外负载(通过其他客户端会话)。
所以查询何时会变慢对我来说似乎完全随机。但从逻辑上讲,我知道它不可能是随机的,它应该受到某些因素的影响。
这正是我的意思:这个因素是什么?这似乎是一个深刻的问题,因此任何好的建议或提示都将受到高度赞赏。
提前非常感谢。
【问题讨论】:
-
你能分享一下查询吗?
-
@CarlosAlvesJorge 不是真的...这是一个函数调用,涉及多个查询。但是缓慢总是在函数的最终 SELECT 中。问题是......它并不总是很慢......具有相同参数的相同查询有时很快,有时(更罕见)很慢。因此,即使我共享查询,我也不确定它是否会提供任何有价值的信息。更不用说需要熟悉所涉及的表格等。
-
参数嗅探 - 您之间是否还有其他函数调用,例如日期范围更广/范围更广?
-
@peter.petrov 无论参数如何,SELECT 都将始终按相同的列加入/过滤/排序?
-
@LukaszSzozda 现在我需要的只是一些好的想法/提示,我会进一步挖掘。在过去的 3-4 天里,我一直在努力解决这个问题,所以......我不希望在 1-2 小时内解决它。
标签: postgresql amazon-rds postgresql-11