Teradata 哈希算法


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

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

Hashing Algorithm

以下是插入数据的步骤。

  • 客户端提交查询。

  • 解析器接收查询并将记录的 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