Teradata - 哈希算法
根据主索引值将行分配给特定 AMP。 Teradata 使用哈希算法来确定哪个 AMP 获取行。
以下是哈希算法的高级图表。
以下是插入数据的步骤。
客户端提交查询。
解析器接收查询并将记录的 PI 值传递给哈希算法。
哈希算法对主索引值进行哈希处理并返回一个 32 位数字,称为行哈希。
行哈希的高阶位(前 16 位)用于标识哈希映射条目。哈希映射包含一个 AMP #。哈希映射是包含特定 AMP # 的存储桶数组。
BYNET 将数据发送到已识别的 AMP。
AMP 使用 32 位行哈希来定位其磁盘中的行。
如果有任何记录具有相同的行哈希,则它会增加唯一性 ID,这是一个 32 位数字。对于新的行哈希,唯一性 ID 被指定为 1,并且每当插入具有相同行哈希的记录时,该 ID 都会递增。
行哈希和唯一性 ID 的组合称为行 ID。
行 ID 为磁盘中的每条记录添加前缀。
AMP 中的每个表行都按其行 ID 进行逻辑排序。
表的存储方式
表按其行 ID(行哈希 + 唯一性 ID)排序,然后存储在 AMP 中。行 ID 与每个数据行一起存储。
Row Hash | Uniqueness 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 | Paul |