Amazon web services 红移加载期间增加磁盘使用率

Amazon web services 红移加载期间增加磁盘使用率,amazon-web-services,amazon-redshift,Amazon Web Services,Amazon Redshift,上下文 我目前正在处理单节点dw2上相对较小的数据集。大型红移集群 当前数据集约为9 gb压缩/90m行 数据大约每小时加载一次到红移集群 一次只能运行一个负载 传入数据的大小各不相同,但可以合理地假设它在整个样本中基本一致 真空查询每天运行一次 问题 我发现红移负载期间磁盘使用量的增长速度比我预期的要快。如果按分钟查看下面的第一张图表,您可以看到磁盘使用率的范围。下边缘是数据集的实际大小,上边缘是加载期间的峰值数据使用量。第二个图表按小时显示磁盘使用情况-相同的数据集,但负载峰值已消除 峰和基

上下文

我目前正在处理单节点dw2上相对较小的数据集。大型红移集群 当前数据集约为9 gb压缩/90m行 数据大约每小时加载一次到红移集群 一次只能运行一个负载 传入数据的大小各不相同,但可以合理地假设它在整个样本中基本一致 真空查询每天运行一次 问题

我发现红移负载期间磁盘使用量的增长速度比我预期的要快。如果按分钟查看下面的第一张图表,您可以看到磁盘使用率的范围。下边缘是数据集的实际大小,上边缘是加载期间的峰值数据使用量。第二个图表按小时显示磁盘使用情况-相同的数据集,但负载峰值已消除

峰和基以相同的速度增长。换句话说,加载期间的磁盘使用峰值似乎主要是总数据大小的函数,而不是传入数据大小的函数

加载的执行方式大致相同。具体而言,它使用以下步骤:

开始交易 使用与实际表相同的架构创建临时表 运行复制查询,使用JSON、GZIP和清单选项从红移导入数据 从临时表中删除已在实际表中复制的数据 删除临时表中重复的数据 使用INSERT将数据加载到实际表中与使用显式列列表的红移文档略有不同,因为表使用标识字段 放下临时表 结束交易 问题

是否预期峰值磁盘使用量将与总数据大小成比例增长?如果是这样的话,这是令人担忧的,因为集群中越来越多的磁盘似乎将被浪费掉

是否有任何策略以不遵循此模式的方式加载数据?我尝试过每隔10分钟加载一次不太频繁的数据,您可以在第一张图表的后面部分看到,峰值之间有更多的空白。这似乎没有任何效果


使用复制命令时,红移需要额外的空间来执行排序。这会导致临时的空间使用高峰。9gb对于用于处理TB dat的红移来说毫无意义。当您处理严重的数据量时,情况会有所不同:您仍然会看到峰值,但不会看到总数据量的两倍

您是否对列使用了一些编码?是否在加载后使用真空?我相信你在描述中漏掉了这一点。这只是这种行为的一个可能原因。“我无法复制您的案例。@所有专栏都使用encoding@YuriLevinsky在上面的上下文部分中提到,吸尘器每天运行一次。我已经向红移团队询问了用于排序的磁盘空间。他们给我的建议是,排序将使用至少2.5倍的传入数据大小。值得关注的不是磁盘使用量,而是它如何变化的模式。