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