Redshift:磁盘已满时的行为?

时间:2017-05-02 11:46:19

标签: amazon-web-services amazon-redshift

我有一个多节点红移群集,并注意到了这种行为。给定日期范围的给定查询用于返回特定行数,例如 - X。在过去几天中,群集磁盘已填满99.75%。数据加载仍然成功,但同一查询返回了Y行数Y<X所以看起来Redhsift删除了一些随机行(我有理由相信它是随机的)

现在我调整了群集大小并运行相同的查询以再次获得X行数。我做出了这样的假设: -

  

在磁盘不足的情况下,Redshift会存档一些随机行(S3?),以便在磁盘空间可用时保持可用性并相应地恢复数据。

但是我无法找到任何关于此行为的官方文档,其中磁盘空间阈值用于在恢复时归档(它没有恢复为90%,但是当我添加新节点时为65%)。有人能指出我正确的文件或确认这种行为吗?

2 个答案:

答案 0 :(得分:1)

回答我自己的问题。我在论坛上联系了亚马逊,后来我在个人聊天的时候联系了redshift的产品经理。他们能够使用交错密钥重现错误,VACUUM REINDEX操作可以破坏索引,给count个查询提供错误答案。亚马逊给了我两个解决方案: -

  1. 损坏后,执行表格的深层副本并再次运行VACUUM REINDEX
  2. 切换到复合键。
  3. 选项1显然对资源和人力都非常沉重。我们切换到复合键,这对我们来说再次不是完美的解决方案,但是工作。最后更新是2周前。按照此处的讨论: - Vacuum reindex causing wrong data counts in the table

答案 1 :(得分:0)

Amazon Redshift不会删除任何数据。

您应该始终致力于在群集上保留备用存储容量,以便为VACUUM操作和复杂查询提供足够的空间。

群集实际上拥有的磁盘空间比公开显示的多,但不应依赖此额外容量。

您应该查阅STL_LOAD_ERRORS表,看看在加载过程中是否发生了导致加载的行数减少的错误。