Redshift table 尺寸和口味
Redshift table sizes & flavours of
对 Redshift 中的术语 'table size' 感到困惑。
我们有:
svv_table_info.size
“table 的大小(以 1MB 块为单位)”
svv_table_info.pct_used
“可用百分比 space 已使用”
... 所以我假设很多 'size' 是空的 space 由于排序键等
然后我们有这个..
https://aws.amazon.com/premiumsupport/knowledge-center/redshift-cluster-storage-space/
.. 使用术语 'minimum' table size.
但是我在哪里都找不到它们在现实世界中的含义的解释?如果优化配置,这是理论上的最小值吗?
最终我需要在没有任何开销的情况下找出原始有形数据的基本大小。
那么是的,将它存储在 Redshift 中实际需要多少光盘 space。
因此,如果我从我们的本地数据库中取出 1TB 并将其推入 Redshift,我会看到类似 1TB(数据)和 1.2TB(数据 + Redshift 开销)的东西。
希望有人能帮忙说明一下
您无法将现有数据库大小转换为 Redshift 中 table 的大小。这是因为:
- 列分开存储
- 最小块大小为 1MB
- Redshift 中的数据经过压缩,因此根据数据类型和选择的压缩类型
,它可以大大减少 space
经过压缩,您的数据在 Redshift 中可能比原始(未压缩)数据源小。但是,除非您过去传输过类似的数据并应用类似的比率,否则您无法真正提前计算出来。
Redshift 将数据存储在 1MB 的块中,块与切片和列相关联。因此,如果我的集群中有 2 个切片,并且 table 有 4 列(加上 3 个系统列,共 7 个)分布为至少包含 2 行的 EVEN,那么我的 table 将最少占用 2 X 7 X 1MB space(磁盘上 14MB)。这就是这篇文章所说的全部内容。
现在,如果我在此 table 中插入另外 2 行,Redshift 将为该数据创建新块。所以现在我的4行数据占用了28MB的space。但是,如果我对 table 进行 Vacuum,则浪费的 space 将被回收并且 table 大小将回落到 14MB。 (是的,这有点过于简单化了,但试图让概念得到理解)
根据经验,一个 1MB 的块通常可以容纳 100,000 行到 2,000,000 行的压缩数据。 (是的,这取决于数据不是怪物 varchars)所以对于我们上面的 table,我可以继续添加行(和清理)而不增加磁盘上的 table 大小,直到我得到几十万行(每片)在 table 中。 Redshift 在存储大块数据方面非常高效,但在存储小数据方面非常低效。
Redshift 对您的数据大小的了解是它在磁盘上占用了多少块(跨所有节点、切片和列)。如果数据以不同方式存储(不是以块、压缩或未压缩的方式存储),那么数据有多大不是跟踪的数据。正如 John 指出的那样,对于大 tables,Redshift 比大多数其他数据库更有效地存储数据(当使用压缩时)。
对 Redshift 中的术语 'table size' 感到困惑。
我们有: svv_table_info.size “table 的大小(以 1MB 块为单位)”
svv_table_info.pct_used “可用百分比 space 已使用”
... 所以我假设很多 'size' 是空的 space 由于排序键等
然后我们有这个.. https://aws.amazon.com/premiumsupport/knowledge-center/redshift-cluster-storage-space/
.. 使用术语 'minimum' table size. 但是我在哪里都找不到它们在现实世界中的含义的解释?如果优化配置,这是理论上的最小值吗?
最终我需要在没有任何开销的情况下找出原始有形数据的基本大小。
那么是的,将它存储在 Redshift 中实际需要多少光盘 space。
因此,如果我从我们的本地数据库中取出 1TB 并将其推入 Redshift,我会看到类似 1TB(数据)和 1.2TB(数据 + Redshift 开销)的东西。
希望有人能帮忙说明一下
您无法将现有数据库大小转换为 Redshift 中 table 的大小。这是因为:
- 列分开存储
- 最小块大小为 1MB
- Redshift 中的数据经过压缩,因此根据数据类型和选择的压缩类型 ,它可以大大减少 space
经过压缩,您的数据在 Redshift 中可能比原始(未压缩)数据源小。但是,除非您过去传输过类似的数据并应用类似的比率,否则您无法真正提前计算出来。
Redshift 将数据存储在 1MB 的块中,块与切片和列相关联。因此,如果我的集群中有 2 个切片,并且 table 有 4 列(加上 3 个系统列,共 7 个)分布为至少包含 2 行的 EVEN,那么我的 table 将最少占用 2 X 7 X 1MB space(磁盘上 14MB)。这就是这篇文章所说的全部内容。
现在,如果我在此 table 中插入另外 2 行,Redshift 将为该数据创建新块。所以现在我的4行数据占用了28MB的space。但是,如果我对 table 进行 Vacuum,则浪费的 space 将被回收并且 table 大小将回落到 14MB。 (是的,这有点过于简单化了,但试图让概念得到理解)
根据经验,一个 1MB 的块通常可以容纳 100,000 行到 2,000,000 行的压缩数据。 (是的,这取决于数据不是怪物 varchars)所以对于我们上面的 table,我可以继续添加行(和清理)而不增加磁盘上的 table 大小,直到我得到几十万行(每片)在 table 中。 Redshift 在存储大块数据方面非常高效,但在存储小数据方面非常低效。
Redshift 对您的数据大小的了解是它在磁盘上占用了多少块(跨所有节点、切片和列)。如果数据以不同方式存储(不是以块、压缩或未压缩的方式存储),那么数据有多大不是跟踪的数据。正如 John 指出的那样,对于大 tables,Redshift 比大多数其他数据库更有效地存储数据(当使用压缩时)。