我有一个多节点红移群集,并注意到了这种行为。给定日期范围的给定查询用于返回特定行数,例如 - X
。在过去几天中,群集磁盘已填满99.75%
。数据加载仍然成功,但同一查询返回了Y
行数Y<X
。 所以看起来Redhsift删除了一些随机行(我有理由相信它是随机的)
现在我调整了群集大小并运行相同的查询以再次获得X
行数。我做出了这样的假设: -
在磁盘不足的情况下,Redshift会存档一些随机行(S3?),以便在磁盘空间可用时保持可用性并相应地恢复数据。
但是我无法找到任何关于此行为的官方文档,其中磁盘空间阈值用于在恢复时归档(它没有恢复为90%,但是当我添加新节点时为65%)。有人能指出我正确的文件或确认这种行为吗?
答案 0 :(得分:1)
回答我自己的问题。我在论坛上联系了亚马逊,后来我在个人聊天的时候联系了redshift的产品经理。他们能够使用交错密钥重现错误,VACUUM REINDEX
操作可以破坏索引,给count
个查询提供错误答案。亚马逊给了我两个解决方案: -
VACUUM REINDEX
。选项1显然对资源和人力都非常沉重。我们切换到复合键,这对我们来说再次不是完美的解决方案,但是工作。最后更新是2周前。按照此处的讨论: - Vacuum reindex causing wrong data counts in the table。
答案 1 :(得分:0)
Amazon Redshift不会删除任何数据。
您应该始终致力于在群集上保留备用存储容量,以便为VACUUM
操作和复杂查询提供足够的空间。
群集实际上拥有的磁盘空间比公开显示的多,但不应依赖此额外容量。
您应该查阅STL_LOAD_ERRORS
表,看看在加载过程中是否发生了导致加载的行数减少的错误。