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