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

时间:2016-01-07 07:03:53

标签: database-design teradata sizing capacity-planning physical-design

将此公式用作TB大小计算的标准,作为Cap的一部分。规划工作。我们正在进行TD 14

     ( rc *   ( rsz / ( blocksize -38) ) * blocksize ) 
      + ( SQL (sel Hashamp()+1 ; ) * 1024 ) 

rsz : row size , rc : count ( * ) 

实际上

 (blocksize-38)/rsz 

只是行/块。它出来了一小部分<我觉得这很糟糕,因为它意味着连续几个街区。 我的问题是

  • 公式是否需要进一步珩磨。添加符号后的后部,提供表头。这个表没有SI - 只有2个日期,1个整数和1个varchar(50),其中NUPI是NPPI。它们都不是Nullable,显然没有数据,开始时没有什么是可压缩的(现在没有足够的数据信息来压缩,但我们以后会运行压缩脚本)
  • 因为它是跨越一行的几个块 - 我应该增加块大小?多少 - 每块的理想行数应该是多少。表数据将在每个季度完全刷新,并且在此期间不会发生任何事情

1 个答案:

答案 0 :(得分:3)

Teradata中的一行从不跨越块。

您的计算错误,您谈的是(blocksize-38)/rsz,但实际计算显示rsz / ( blocksize -38)

随着较新版本中的块开销增加到74,这应该是正确的计算:

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

它被发现了 Sizing Base Tables, Hash Indexes, and Join Indexes

但是你会注意到,对于较大的表,这会接近rc * rsz。由于没有人关心小表,我通常使用这种简化的计算来确定表的大小(您可以添加1或2%以获得最大可能的大小)。

编辑:

不是计算错误,而是由于使用了基本数据类型(可能是DECIMAL的截断)。更改为FLOATNUMBER

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