【问题标题】:Redshift table occupies exponentially more disk space in production clusterRedshift 表在生产集群中占用的磁盘空间呈指数增长
【发布时间】:2017-07-26 05:53:32
【问题描述】:

生产集群详情:

  • 节点类型 dc1.8xlarge
  • 节点 25
  • 每个节点 2.56TB SSD 存储

测试集群详情:

  • 节点类型 ds2.xlarge
  • 节点 6
  • 每个节点 2TB 硬盘存储

当具有完全相同的 DDL 和编码的同一张表被卸载并从生产集群复制到测试集群时,它的磁盘占用量呈指数级减少。这已经使用具有不同分布样式和排序键模式的多个表进行了测试。

示例: Table A (No sort key, DISTSYLE EVEN) - Size in production: 60GB; Size in test: 0.6 GB

Table B (Sort key, DISTSTYLE KEY) - Size in production: 96GB 100% sorted; Size in test: 1.4 GB 100% sorted

有什么想法会导致这种差异吗?我已经阅读了大多数 redshift 论坛,但无法找到此问题的原因。我正在使用管理视图 v_space_used_per_tbl(由 AWS 提供)来计算表的大小。

【问题讨论】:

标签: amazon-redshift


【解决方案1】:

如果表行数较少,则您的表大小由集群的最小表大小定义。

Redshift 为集群中的每个切片的每列至少分配 1MB。 dc1.8xlarge 节点有 32 个切片,因此在一个 25 个节点的集群上,每列约为 800MB。

一个 60GB 最小大小的表有大约 72 个用户列加上 3 个内部 [如果某些列很大,则更少VARCHAR()]。 ds2.xlarge 节点有 2 个切片,因此在 6 节点集群上,72 列表的最小大小约为 900MB。

特别是对于大型集群,如果表是“维度”表(小型查找表),则应考虑使用DISTSTYLE ALL。这将每个节点每列的最小大小减少到 1MB。

详细解释请参考AWS知识库文章Why does a table in my Amazon Redshift cluster consume more disk storage space than expected?

【讨论】:

    猜你喜欢
    • 2017-01-20
    • 1970-01-01
    • 2016-05-10
    • 2011-04-30
    • 1970-01-01
    • 2018-03-02
    • 2013-11-02
    • 2015-04-06
    • 1970-01-01
    相关资源
    最近更新 更多