Teradata - 哈希算法

根据主索引值为特定AMP分配行. Teradata使用散列算法来确定哪个AMP获取行.

以下是散列算法的高级图.

哈希算法

以下是插入数据的步骤.

  • 客户端提交查询.

  • 解析器接收查询并将记录的PI值传递给散列算法.

  • 散列算法散列主索引值并返回一个32位数字,称为行哈希.

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

  • BYNET将数据发送到标识的AMP.

  • AMP使用32位Row哈希来查找其磁盘中的行.

  • 如果有任何记录具有相同的行哈希,然后它增加32位数的唯一性ID.对于新行散列,唯一性ID被指定为1,并且只要插入具有相同行散列的记录就会递增.

  • 行散列和唯一性ID的组合是称为行ID.

  • 行ID为磁盘中的每条记录添加前缀.

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

如何存储表

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

行哈希唯一性IDEmployeeNoFirstNameLastName
2A01 26110000 0001101MikeJames
2A01 26120000 0001104AlexStuart
2A01 26130000 0001102RobertWilliams
2A01 26140000 0001105RobertJames
2A01 26150000 0001103Peter保罗