一直将此公式用作TB大小计算的标准,作为Cap的一部分。规划工作。我们在TD 14 上
( rc * ( rsz / ( blocksize -38) ) * blocksize )
+ ( SQL (sel Hashamp()+1 ; ) * 1024 )
rsz : row size , rc : count ( * )
这里实际上是
(blocksize-38)/rsz
只不过是行/块。它是一个分数<1.我认为这很糟糕,因为这意味着一排有几个街区。我的问题是
- 这些配方需要进一步珩磨吗。后面的部分加上符号,提供表头。这个表没有SI——只有2个日期,1个Integer和1个varchar(50),其中NUPI是NPPI。它们中没有一个是可以为null的,显然没有数据,任何东西一开始都是可压缩的(股份有限公司压缩现在没有足够的数据信息,但我们稍后会运行压缩脚本)
- 因为它将是横跨一行的几个块-我应该增加块的大小?多少-每个块的理想行数应该是多少。表格数据将每季度进行一次全面刷新,在此期间不会发生任何事情
Teradatanever中的一行跨越块。
你只是计算错了,你说了(blocksize-38)/rsz
,但实际计算显示了rsz / ( blocksize -38)
。
随着新版本中的块开销增加到74,这应该是正确的计算:
( rc / (( blocksize - 74)/rsz ) * blocksize )
+ ( (HASHAMP()+1 ) * 1024 )
它位于调整基表、哈希索引和联接索引的大小
但您会注意到,对于较大的表,这接近rc * rsz
。由于没有人关心小表,我通常使用这种简化的计算来调整表的大小(您可以添加1%或2%来获得最大可能的大小)。
编辑:
计算不是错误的,这是由于使用了基本数据类型(可能是DECIMAL
的截断)。更改为FLOAT
或NUMBER
:
( rc * ( rsz / ( CAST(blocksize -74 AS FLOAT)) ) * blocksize )
+ ( (HASHAMP()+1 ) * 1024 )