根据主索引值为特定AMP分配行. Teradata使用散列算法来确定哪个AMP获取行.
以下是散列算法的高级图.
以下是插入数据的步骤.
客户端提交查询.
解析器接收查询并将记录的PI值传递给散列算法.
散列算法散列主索引值并返回一个32位数字,称为行哈希.
行散列(前16位)的高阶位用于标识散列映射条目.哈希映射包含一个AMP#.哈希映射是一个包含特定AMP#的存储桶数组.
BYNET将数据发送到标识的AMP.
AMP使用32位Row哈希来查找其磁盘中的行.
如果有任何记录具有相同的行哈希,然后它增加32位数的唯一性ID.对于新行散列,唯一性ID被指定为1,并且只要插入具有相同行散列的记录就会递增.
行散列和唯一性ID的组合是称为行ID.
行ID为磁盘中的每条记录添加前缀.
AMP中的每个表行按其行ID进行逻辑排序.
如何存储表
表按行ID(行哈希 + 唯一性ID)排序,然后存储在AMP中.行ID与每个数据行一起存储.
行哈希 | 唯一性ID | EmployeeNo | FirstName | LastName |
---|---|---|---|---|
2A01 2611 | 0000 0001 | 101 | Mike | James |
2A01 2612 | 0000 0001 | 104 | Alex | Stuart |
2A01 2613 | 0000 0001 | 102 | Robert | Williams |
2A01 2614 | 0000 0001 | 105 | Robert | James |
2A01 2615 | 0000 0001 | 103 | Peter | 保罗 |