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