teradata 数据块大小和 table 大小计算
teradata data block size and table size calculations
作为 Cap 的一部分,一直使用此公式作为 TB 大小计算的标准。计划工作。我们在 TD 14
( rc * ( rsz / ( blocksize -38) ) * blocksize )
+ ( SQL (sel Hashamp()+1 ; ) * 1024 )
rsz : row size , rc : count ( * )
其实这里
(blocksize-38)/rsz
只不过是行/块。结果是小于 1 的分数。我认为这很糟糕,因为这意味着连续有几个块。
我的问题是
- 公式是否需要进一步磨练。加号后的后半部分,提供了table header。此 table 没有 SI - 只有 2 个日期、1 个整数和 1 个带有 NUPI 的 varchar (50),即 NPPI。 None 其中是 Nullable 并且显然没有数据,开始时没有任何内容是可压缩的(好吧,现在没有足够的数据信息来压缩,但我们稍后会 运行 压缩脚本)
- 因为它会跨越一行的几个块 - 我应该增加块大小?多少 - 每个块的理想行数应该是多少。 Table 数据将每季度全面刷新,在此期间不会发生任何事情
Teradata 中的一行从不 跨越块。
你只是计算错了,你说的是(blocksize-38)/rsz
,但实际计算显示rsz / ( blocksize -38)
。
随着较新版本中的块开销增加到 74,这应该是正确的计算:
( rc / (( blocksize - 74)/rsz ) * blocksize )
+ ( (HASHAMP()+1 ) * 1024 )
它位于
Sizing Base Tables, Hash Indexes, and Join Indexes
但是您会注意到,对于较大的 table,这接近 rc * rsz
。由于没有人关心小的 table,我通常使用这个简化的计算来确定 table 的大小(您可以添加 1% 或 2% 以获得最大可能的大小)。
编辑:
不是计算错误,而是由于使用了基本数据类型(可能是 DECIMAL
的截断)。更改为 FLOAT
或 NUMBER
:
( rc * ( rsz / ( CAST(blocksize -74 AS FLOAT)) ) * blocksize )
+ ( (HASHAMP()+1 ) * 1024 )
作为 Cap 的一部分,一直使用此公式作为 TB 大小计算的标准。计划工作。我们在 TD 14
( rc * ( rsz / ( blocksize -38) ) * blocksize )
+ ( SQL (sel Hashamp()+1 ; ) * 1024 )
rsz : row size , rc : count ( * )
其实这里
(blocksize-38)/rsz
只不过是行/块。结果是小于 1 的分数。我认为这很糟糕,因为这意味着连续有几个块。 我的问题是
- 公式是否需要进一步磨练。加号后的后半部分,提供了table header。此 table 没有 SI - 只有 2 个日期、1 个整数和 1 个带有 NUPI 的 varchar (50),即 NPPI。 None 其中是 Nullable 并且显然没有数据,开始时没有任何内容是可压缩的(好吧,现在没有足够的数据信息来压缩,但我们稍后会 运行 压缩脚本)
- 因为它会跨越一行的几个块 - 我应该增加块大小?多少 - 每个块的理想行数应该是多少。 Table 数据将每季度全面刷新,在此期间不会发生任何事情
Teradata 中的一行从不 跨越块。
你只是计算错了,你说的是(blocksize-38)/rsz
,但实际计算显示rsz / ( blocksize -38)
。
随着较新版本中的块开销增加到 74,这应该是正确的计算:
( rc / (( blocksize - 74)/rsz ) * blocksize )
+ ( (HASHAMP()+1 ) * 1024 )
它位于 Sizing Base Tables, Hash Indexes, and Join Indexes
但是您会注意到,对于较大的 table,这接近 rc * rsz
。由于没有人关心小的 table,我通常使用这个简化的计算来确定 table 的大小(您可以添加 1% 或 2% 以获得最大可能的大小)。
编辑:
不是计算错误,而是由于使用了基本数据类型(可能是 DECIMAL
的截断)。更改为 FLOAT
或 NUMBER
:
( rc * ( rsz / ( CAST(blocksize -74 AS FLOAT)) ) * blocksize )
+ ( (HASHAMP()+1 ) * 1024 )