独立用户
定义工作负载
根据工作负载对用户进行分组
选择每个队列的插槽数和内存百分比
我们的Redshift WLM 设置指南 将 引导您完成四步流程,以消除队列等待时间并减少基于磁盘的查询。这两者都会降低集群速度,因此让我们仔细研究一下这种 Redshift 性能调优技术。
通过将队列槽数与峰值并发量相匹配来消除队列等待时间
如果您使用 Redshift 已有一段时间,您可能遇到过这样的情况:一个查询过去运行两秒钟,现在运行速度却慢了很多。最常见的原因是排队。查询在队列中等待,因为集群中的槽数对于正在执行的并发查询数来说太少。
默认配置允许您在一个队列中运行五个并发查询。这意味着如果正在执行五个查询,则第六个查询将排队,直到有空位为止。
目标是确保查询不会在队列中等待。这可以通过将队列的槽数与该队列中运行的查询的实际并发数相匹配来实现。
您可以通过以下方式减少排队等待时间:
增加队列的槽数
通过在一天中更均匀地分布查询来减少并发性。
这种方法还有另一个好处——您可以 正确使用 Amazon Redshift短查询加速(“SQA”)并避免 SQA 的缺点。激活 SQA 会消耗集群内的内存——这让我们想到了基于磁盘的查询。
通过为队列分配足够的内存来减少基于磁盘的查询
增加槽数以消除排队可能会产生不利的副作用:基于磁盘的查询。“基于磁盘”意味着查询耗尽 RAM,并开始使用硬盘。查询转为基于磁盘是因为查询内存超出了该队列中的“每槽内存”。每槽内存的计算方式如下:
由于每个队列都分配了固定百分比的集群内存(您在配置 WLM 队列时设置的值),因此添加更多插槽将减少每个插槽的内存。
基于磁盘的查询会导致两个主要问题:
查询速度变慢,因为它们需要更多 I/O
并发性增加会导致更多的排队。
当基于磁盘的查询频率上升时,就会发生连锁反应。更多的 I/O 会导致更多的 CPU,这反过来会使查询运行得更慢,从而增加整体并发性。
根据经验法则,维护您的队列,使得少于 10% 的查询基于磁盘。
借助 Integrate.io 中的吞吐量和内存分析仪 英国海外华人电话号码数据 表板,我们可以轻松找到正确的插槽数和内存百分比。当您可以在直观的时间序列仪表板中看到相关指标时,为每个队列分配正确的插槽数和内存百分比就变得很简单。
立即为您的集群找到合适的插槽数量和内存百分比
使用变更数据捕获 (CDC)
Amazon Redshift COPY 命令利用了并行架构,是将数据移入 Redshift 的推荐方式。COPY 命令经过了优化,但 COPY 操作仍然很昂贵。最佳做法是仅复制 您 需要的行。
目标是尽量减少提取的行数。最好的方法是确保您的 ETL 工具仅复制自上次更改后的数据。否则,您将遇到两个问题:
磁盘利用率频繁飙升,需要更多可用容量
删除使用 I/O 的冗余数据(重复数据删除)并增加运行 VACUUM 操作的需要。