我有一个多节点红移集群,并注意到这种行为。给定日期范围的给定查询用于返回特定数目的行,例如- X。在过去的几天里,集群磁盘被填满到99.75%。数据加载仍然是成功的,但是相同的查询返回了带有Y的Y<X行数。所以看起来Redhsift删除了一些随机行(我有理由相信它是随机的)。
现在,我调整了集群的大小,并运行了相同的查询,以再次获得X行数。我做了一个假设:-
在低磁盘下,Redshift将归档一些随机行(S3?)当磁盘空间可用时,保持可用性并相应地还原数据。
但是,我无法找到任何关于此行为的官方文档,在还原时,磁盘空间阈值用于归档(它没有恢复到90%,而是在我添加新节点时恢复到65% )。有人能给我指出正确的文件或确认这种行为吗?
发布于 2017-10-16 11:17:13
回答我自己的问题。我在论坛上联系了亚马逊,后来有一位红移公司的产品经理联系了我。它们能够用交错的键再现错误,如果VACUUM REINDEX操作可能破坏索引,给count查询提供错误的答案。亚马逊给了我两个解决方案:-
VACUUM REINDEX。备选方案1显然对资源和人力都很费钱。我们切换到了复合键,这对我们来说也不是完美的解决方案,而是起作用的。最后一次更新是在两周前。按照这里的讨论:- 真空重新索引导致表中的数据计数错误。
发布于 2017-05-03 00:59:55
亚马逊红移不会删除任何数据。
您应该始终保持集群上的空闲存储容量,以便为VACUUM操作和复杂查询提供足够的空间。
集群实际上有比公开显示的更多的磁盘空间,但是不应该依赖这种额外的容量。
您应该查阅STL_LOAD_ERRORS表,以查看在加载过程中是否发生了导致加载的行较少的错误。
https://stackoverflow.com/questions/43737048
复制相似问题