【问题标题】:Redshift: Behaviour when disk is full?Redshift:磁盘已满时的行为?
【发布时间】:2017-05-02 11:46:19
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: amazon-web-services amazon-redshift


    【解决方案1】:

    回答我自己的问题。我在论坛上联系了亚马逊,后来一位 redshift 的产品经理在个人聊天中联系了我。他们能够使用交错键重现错误,VACUUM REINDEX 操作可能会破坏索引,从而对count 查询给出错误答案。亚马逊给了我两个解决方案:-

    1. 损坏后,执行表的深层复制并再次运行VACUUM REINDEX
    2. 切换到复合键。

    选项 1 显然对资源和人力都非常费力。我们切换到复合键,这对我们来说也不是完美的解决方案,但可以工作。上次更新是 2 周前。关注这里的讨论:- Vacuum reindex causing wrong data counts in the table.

    【讨论】:

      【解决方案2】:

      Amazon Redshift 不会删除任何数据。

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

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

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

      【讨论】:

      • 感谢您的回复。然而,我们有一个 cron 在检查表的排序状态后运行真空。正如我之前提到的,STL_LOAD_ERRORS 中也没有错误。只是因为一些新客户,我们突然将这么多数据加载到 Redshift 中。
      • 当磁盘已满而您甚至无法运行 Vacuum 或复杂查询时,我也无法找到特别针对此用例的任何内容。
      • 这是 Redshift 中的一个错误。看我的回答。你是对的,数据没有被删除
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      相关资源
      最近更新 更多