Teradata - 哈希算法


根据主索引值将行分配给特定的 AMP。Teradata 使用哈希算法来确定哪个 AMP 获取该行。

以下是哈希算法的高级图表。

哈希算法

以下是插入数据的步骤。

  • 客户端提交查询。

  • 解析器接收查询并将记录的 PI 值传递给哈希算法。

  • 哈希算法对主索引值进行哈希处理并返回一个 32 位数字,称为 Row Hash。

  • 行散列的高阶位(前 16 位)用于标识散列映射条目。哈希映射包含一个 AMP #。哈希映射是包含特定 AMP # 的存储桶数组。

  • BYNET 将数据发送到识别的 AMP。

  • AMP 使用 32 位行哈希来定位其磁盘中的行。

  • 如果有任何记录具有相同的行哈希,则它会增加唯一性 ID(32 位数字)。对于新的行哈希,唯一性 ID 被分配为 1,并在插入具有相同行哈希的记录时递增。

  • Row hash 和 Uniqueness ID 的组合称为 Row ID。

  • 行 ID 作为磁盘中每条记录的前缀。

  • AMP 中的每个表行均按其行 ID 进行逻辑排序。

表如何存储

表按行 ID(行哈希 + 唯一性 ID)排序,然后存储在 AMP 中。行 ID 与每个数据行一起存储。

行哈希 唯一性ID 员工号
2A01 2611 0000 0001 101 麦克风 詹姆士
2A01 2612 0000 0001 104 亚历克斯 斯图尔特
2A01 2613 0000 0001 102 罗伯特 威廉斯
2A01 2614 0000 0001 105 罗伯特 詹姆士
2A01 2615 0000 0001 103 彼得 保罗