teradata数据块大小和表大小计算



一直将此公式用作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的截断)。更改为FLOATNUMBER:

 ( rc *   ( rsz / ( CAST(blocksize -74 AS FLOAT)) ) * blocksize ) 
  + ( (HASHAMP()+1  ) * 1024 ) 

最新更新