2016-12-03 70 views
0

增加后我有一个大表,Netezza公司和表的大小约为600 GB。 当我尝试从现有表格创建新表格时,表格大小已增加。新的表格大小是617 GB。Netezza公司表的大小使用CTAS命令

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

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

在此先感谢。

+0

是否''old_table_name'还分布'column_name'? –

+0

不可以。在旧表格中,我们没有任何分配键。 – Amlan

+0

当你说“桌子大小”,你的意思是使用空间或分配空间? –

回答

0

有两个相关的三围表的“大小”:分配和使用的大小(两者以字节为单位) _v_table_storage_stat会帮你看看这两个大小为给定表

对于较小的表,分配的大小可以比使用的大小大许多倍,并且假定行的均匀分布,则将在每个数据片上分配最小3MB的数据。我在480个数据切片的双机架MAKO系统上完成了大部分工作。因此,任何少于14,4GB的表或多或少与'大小'的优化无关。

尽管如此,我仍会尝试解释你看到的: 1)Netezza中的所有数据都是压缩的。 2)为每个单独的数据片上的“块”数据进行压缩。 3)如果每个数据块中的数据与可以想象的最“混合”情况相比有许多相似之处,则压缩比(压缩后的数据大小除以前的大小)变得更好(更小)。 4)'分配'和'组织'可以影响这一点。在将数据添加到您的表格时所使用的select语句中,同样可以使用'order by'或者甚至'group by'

在我的系统中,我有一个非常宽的表,每天有几个“副本”我们客户的帐户。每个副本与前一个副本99%相同,只有'平衡'这样的内容发生变化。

通过分配accountID和组织AccountID Timestamp - 我看到一个10-15%的小尺寸。有些数据切片有更好的效果,因为它们包含很多“系统”帐户ID,它们在数据中具有不同的模式。

简而言之: A)这是完全自然 B),因为没有太担心它: C)Netezza公司系统上的“大”表是不一样采用了4核数据库太少的内存和sloooow磁盘:)