找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 263|回复: 0

如何修复 Amazon Redshift 中基于磁盘的查询和高磁盘使用率

[复制链接]

1

主题

0

回帖

25

积分

新手上路

积分
25
发表于 2023-11-15 14:12:37 | 显示全部楼层 |阅读模式
目录 WLM 和基于磁盘的查询 如何防止查询基于磁盘 中间存储 限制中间存储使用量的方法。 对集群存储利用率的影响 结论 正确管理存储利用率对于Amazon Redshift集群的性能和优化成本至关重要。我们之前已经讨论过关注基于磁盘的查询有多么重要,在这篇文章中,我们将更详细地讨论 Amazon Redshift 在执行查询时使用磁盘的方式,以及这意味着什么查询性能。 Amazon Redshift 在查询执行期间以两种方式使用存储: 基于磁盘的查询。当查询耗尽内存时,溢出会“溢出”到磁盘,查询将变为“基于磁盘”。 中间存储。当查询需要保存中间操作的结果时,以用作将来操作的输入。 使用过多的存储会影响您的集群,因为: 查询性能会受到影响,因为磁盘比内存慢 100 倍。

其他查询会变慢,因为增加的 I/O 会影响作为共享资源的提交队列。 集群的磁盘利用率可能达到 100%,导致查询失败或需要配置更多节点。 最坏的情况是 (3),即集群已满。它可以同时发生在集群中的 沙特阿拉伯电报号码数据 所有节点上,或者仅从一个节点开始,然后传播到整个集群,如下图所示。 按节点的磁盘利用率,基于磁盘的查询 因此,让我们看看我们可以采取哪些措施来解决和防止这种情况。 WLM 和基于磁盘的查询 如果您还不熟悉 Redshift 如何为查询分配内存,您应该首先阅读我们有关配置 WLM 的文章。 要点是 Redshift 允许您设置每个查询运行时应具有的可用内存量。该值是通过向每个 WLM 队列分配一定百分比的内存来定义的,然后将其均匀分配到您定义的并发槽数中。



当查询执行时,它会被分配结果内存量,无论它是否需要更多(或更少)。因此,分配太多的内存是浪费的(因为集群中的每个节点显然都有有限的内存),而分配太少的内存可能会导致查询溢出到磁盘。 溢出其分配的 WLM 内存的查询是“基于磁盘的”。这些查询的性能通常会显着下降,因为磁盘 I/O 比内存 I/O 慢几个数量级。 执行查询时,Redshift 可以将六种类型的内部操作溢出到磁盘: 聚合 连接的哈希值 保存中间行以供将来的查询步骤使用 排序 从中间或最终结果中删除重复项(唯一) 窗口函数 如果这些操作中的任何一个正在处理的行数(即更多字节)超出了分配的内存容量,则 Redshift 必须开始将数据交换到磁盘,从而导致查询速度显着减慢。 AWS 建议您将基于磁盘的查询的百分比保持在 10% 以下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|极客工具

GMT+8, 2024-9-20 00:58 , Processed in 0.025929 second(s), 25 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表