使用CTAS命令后,Netezza表大小增加

时间:2016-12-03 10:14:21

标签: netezza aginity

我在Netezza有一张大桌子,桌面大小约为600 GB。 当我尝试从现有表创建一个新表时,表的大小已经增加。新表大小为617 GB。

我用来创建新表的SQL: 创建表new_table_name作为select * from old_table_name distribution on(column_name); 生成new_table_name的统计信息; 但是新表和旧表的行数相同。

增加表格大小的原因是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

表的“大小”有两个相关的度量:已分配和已使用的大小(均以字节为单位) _v_table_storage_stat将帮助您查看给定表的两种大小

对于小型表,分配的大小可以比使用的大小大许多倍,并且假设行的分布均匀,将在每个数据切片上分配最少3MB。我的大部分工作都是在具有480个数据切片的双机架MAKO系统上完成的。因此,任何小于14,4GB的表格或多或少与“大小”

的优化无关

然而,我会尝试解释你所看到的: 你必须意识到这一点 1)Netezza中的所有数据都是压缩的。 2)正在对每个单独数据的“块”数据进行压缩。 3)如果每个块中的数据与可以想象的最“混合”情况相比具有许多相似性,则压缩比(压缩后的数据大小除以之前的大小)变得更好(更小)。 4)'分发'和'组织'都可以影响这一点。在向表中添加数据时使用的select语句中的“order by”或“group by”也是如此

在我的系统中,我有一张非常宽的桌子,每天都有几个'副本'的客户银行账户。每个副本与前一个副本99%相同,只有“平衡”变化。

通过在accountID上分发并在AccountID上进行组织,时间戳 - 我看到的尺寸缩小了10-15%。一些数据切片效果更好,因为它们包含许多“系统”帐户ID,这些ID在数据中具有不同的模式。

简而言之: A)这是完全自然的 B)不要太担心它,因为: C)Netezza系统上的“大”表与具有太少内存和低速磁盘的4核数据库不同:)