我如何加快我的红移查询?

等待分钟和分钟,也许甚至一个小时,为您的疑问计算,这是许多不断增长的公司的不幸现实。您的数据是否比群集更快地生长,或者您并行运行太多的工作,您的查询可能会减慢许多原因。

为了帮助您提高查询性能,本指南将向您介绍常见问题以及如何减轻这些问题。

查询速度慢的常见原因

1.没有足够的空间

随着您的数据卷现,您的团队写入更多查询,您可能在群集中运行不足。

要检查您是否接近最大,请运行此查询。它会告诉您群集中使用的存储百分比。我们建议从不超过75-80%的存储容量。如果您接近容量,请考虑添加更多节点。

在这里了解如何调整集群的大小。

2.效率低下

您需要检查的另一件事是查询是否有效。例如,如果您正在用查询扫描整个数据集,那么您可能没有充分利用计算资源。

编写性能查询的一些技巧:

  • 考虑使用内部连接因为它们更有效左连接

  • 远离联盟只要有可能。

  • 如果可以,请指定多个级别的条件。

  • 使用解释显示查询执行计划和成本。

要了解更多关于编写漂亮SQL的知识,请查看以下资源:

3.多个ETL进程和疑问运行

Redshift等数据库的计算资源有限。同时运行多个查询或将数据插入仓库的ETL进程将争夺计算能力。

如果同时有多个ETL进程加载到仓库中,特别是当分析人员还试图运行查询时,一切都会变慢。尝试在不同的时间以及集群最不活跃的时候安排它们。

如果您是段业务层客户,您可以在仓库设置下安排同步时间。

此外,你可能想要利用红移的优势工作量管理这有助于确保快速运行的查询不会陷入困境。

4.默认WLM队列配置

如前所述,Redshift使用工作量管理。每个队列都被配置为以可以为您的用例优化的方式分发资源。

默认配置是单个队列,只有5个查询同时运行,但我们发现默认值仅适用于非常低卷仓库。更频繁的是,调整此配置可以显着提高您的同步时间。

在执行SQL语句之前,我们使用设置query_group为segment;将所有查询组合在一起。这让你可以很容易地为Segment创建一个队列,可以从你自己的查询中隔离出来。Redshift支持的最大并发性是50所有查询组,以及存储器中的资源在所有这些查询中均匀分发。

我们最初的建议是针对2个WLM队列:

  1. 排队等候查询组,并发10

  2. 将默认队列留出并发5.

通常,我们负责我们连接到数据库中的大多数写入,因此具有更高的并发性允许我们尽快写入。但是,如果您还使用相同的数据库为您自己的ETL进程使用相同的数据库,则可能需要对两个组使用相同的并发性。此外,如果您对数据库有其他应用程序,您甚至可能需要其他队列。

每个集群可能有不同的需求,所以如果另一种配置更适合您的用例,请不要遵循此建议。AWS提供了一些的指导方针当然,你总是可以的联系我们因为我们非常乐意分享我们在研究红移时学到的东西。

分段仓库的专业提示

除了遵循性能最佳实践之外,如果您正在使用分段仓库,还需要考虑以下几个优化。

影响加载时间的因素

当Segment正在积极地将数据加载到您的数据仓库时,我们正在与您可能正在运行的任何其他作业竞争集群空间和存储。以下是影响分段仓库加载时间的参数。

  • 的数据量。我们的管道需要为每次同步加载和重复数据,所以只要有更多的容量就意味着这些操作将花费更长的时间。
  • 来源数量。当我们开始将你的数据同步到你的仓库时,我们就会为你在分片里的每一个资源启动一个新任务。因此,您拥有的资源越多,加载时间可能就越长。这就是WLM队列和并发性设置可以发挥巨大作用的地方。
  • 列的数量和大小。列大小和列的数量也会影响加载时间。如果您有很长的属性值,或者每个事件有很多属性,那么加载可能需要更长的时间。

性能优化

为了确保在使用分段仓库时有足够的空间进行快速查询,这里有一些提示!

  • 调整集群的大小。如果您发现您的查询在白天的关键时间越来越慢,请添加更多节点以提供足够的空间供我们加载数据和您的团队运行询问。
  • 禁用未使用的源。如果您没有积极分析来自来源的数据,请考虑禁用仓库的来源(可用于业务层)。如果您不再使用源码 - 也许您只是在玩它进行测试,您甚至可能会完全删除它。这将在ETL过程中启动较少的工作。
  • 在休息时间安排同步。如果您关注查询时间,并且您不介意数据有点陈旧,您可以安排当大多数团队没有积极使用数据库时运行的同步。(可用于商业层客户。)manbetx客户端应用下载
  • 安排定期真空。确保为您的集群安排常规的真空,这样旧的删除数据就不会占用空间。

我们希望这些步骤将加快您的工作流程!如果你需要任何其他帮助,尽管来联系我们

此页面的最后修改:24 24 21日



开始分段

细分是将你的网站和手机应用数据整合到300多个分析和增长工具中的最简单方法。
创建免费帐户