查询缓存amazon redshift

Posted

技术标签:

【中文标题】查询缓存amazon redshift【英文标题】:Query cache amazon redshift 【发布时间】:2018-11-25 06:13:42 【问题描述】:

我在几天的间隔内运行了相同的查询,但在 Amazon Redshift 上的第一次执行运行时执行时间不同。 对于两次运行,我都将会话的缓存设置为 FALSE。

这两个查询的后续查询都更快(以毫秒为单位)。我检查了查询缓存的使用情况,没有使用查询缓存。

问题: 在没有使用查询缓存的情况下,为什么以及如何使后续查询运行得更快? 为什么同一个查询的第一次执行需要不同的时间?

附:我使用了相同的排序、分布和列编码。附上我的执行时间基准图。

【问题讨论】:

【参考方案1】:

Redshift 中的查询(技术上的查询段)在它们第一次执行时被编译。随后的执行(即使使用不同的谓词)通常不需要编译,并且通过跳过该步骤将运行得更快。参见本文档“代码编译”部分:Factors Affecting Query Performance

另外,请在选择Interleaved 排序键之前查看我们的表格设计指南中的文档"Compound and Interleaved Sort Keys"。此类密钥仅在特定场景下推荐使用,不应作为默认选择。

【讨论】:

嗨,乔,感谢您的回复。我不知道涉及到查询编译缓存。你会碰巧知道这样的缓存会维持多久吗?关于排序键,我阅读了文档。感谢您的建议,我已删除交错键并使用复合排序键重新创建表。执行时间似乎没有改变。我将继续只在需要时使用交错键。非常感谢。

以上是关于查询缓存amazon redshift的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Redshift Query 中禁用使用缓存结果?

不使用 jdbc 驱动程序查询 Amazon Redshift

使用 Amazon Redshift / PostgreSQL 进行漏斗查询

Amazon Redshift 查询神秘死亡

在 Amazon Redshift 中按日期透视查询

同时对 Amazon Redshift 和本地源运行查询