将此公式用作TB大小计算的标准,作为Cap的一部分。规划工作。我们正在进行TD 14
( rc * ( rsz / ( blocksize -38) ) * blocksize )
+ ( SQL (sel Hashamp()+1 ; ) * 1024 )
rsz : row size , rc : count ( * )
实际上
(blocksize-38)/rsz
只是行/块。它出来了一小部分<我觉得这很糟糕,因为它意味着连续几个街区。 我的问题是
答案 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
的截断)。更改为FLOAT
或NUMBER
:
( rc * ( rsz / ( CAST(blocksize -74 AS FLOAT)) ) * blocksize )
+ ( (HASHAMP()+1 ) * 1024 )