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