0

我在 Netezza 中有一张大表,表大小约为 600 GB。当我尝试从现有表创建新表时,表大小增加了。新表大小为 617 GB。

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

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

提前致谢。

4

1 回答 1

0

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

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

不过,我将尝试解释您所看到的:您必须意识到 1) Netezza 中的所有数据都是压缩的。2) 正在对每个数据片上的“块”数据进行压缩。3)如果每个块中的数据与可想象的最“混合”情况相比具有许多相似性,则压缩比(压缩后的数据大小除以之前的大小)会变得更好(更小)。4)“分发”和“组织”都可以影响这一点。在向表中添加数据时使用的选择语句中的“排序依据”甚至“分组依据”也可以

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

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

简而言之:A)这是非常自然的 B)不要太担心,因为:C)Netezza 系统上的“大”表与内存太少且磁盘太慢的 4 核数据库上的表不同: )

于 2016-12-04T20:37:36.577 回答