在RedShift中第一次执行查询时的长运行时间

时间:2013-11-21 07:36:03

标签: amazon-redshift paraccel

我注意到第一次在RedShift上运行查询时,需要3-10秒。当我再次运行相同的查询时,即使在WHERE条件中使用不同的参数,它也会快速运行(0.2秒)。 查询我说的是在一个包含3个整数列的约1M行的表上运行。

RedShift在第一次运行时编译查询,然后重新使用编译后的代码会导致执行时间的巨大差异吗?

如果是 - 如何始终保持编译查询的缓存温暖?

还有一个问题: 给出queryA和queryB。 我们假设queryA首先被编译和执行。 queryB与queryA有多相似,这样queryB的执行将使用为queryA?

编译的代码

1 个答案:

答案 0 :(得分:4)

第一个问题的答案是肯定的。 Amazon Redshift编译查询代码并对其进行缓存。编译后的代码在集群中的会话之间共享,因此,由于没有开销,在不同会话中具有甚至不同参数的相同查询将运行得更快。

他们还建议使用第二次执行查询的结果作为基准。

以下链接中提供了此问题和详细信息的答案。 http://docs.aws.amazon.com/redshift/latest/dg/c-compiled-code.html