Teradata 哈希算法17 Mar 2025 | 4 分钟阅读 哈希算法是一段充当转换表的代码。基于主索引值,将行分配给特定的 AMP。 Teradata 使用哈希算法来确定哪个 AMP 获得该行。 Teradata 数据库哈希算法是专有的数学函数,它将任意长度的输入数据值转换为 32 位值,称为 rowhash,用于将行分配给 AMP。 无论输入是不同列值的组合,还是来自可变长度列的不同大小的值,或是由不同的数据类型组成,哈希算法的输出始终是固定大小和格式。 处理大小均匀的行标识符简化了数据库在存储、聚合、排序和连接行时的工作。 以下是关于哈希算法的概要图。 ![]() 这是上面图表的解释,说明如何插入数据
哈希函数Teradata SQL 提供了多个函数,可用于分析现有索引和候选索引的哈希特征。 这些函数在 SQL 函数、运算符、表达式和谓词中有完整记录。 Teradata 中有四种类型的哈希函数可用。 1. HASHROW: 它描述表达式的十六进制 rowhash 值。 如果我们一遍又一遍地运行查询,它会给出相同的结果。 HASHROW 函数生成作为数据行的一部分存储的 32 位二进制行哈希。 它最多返回 4,294,967,295 个唯一值。 语法 2. HASHAMP: HASHAMP 函数返回任何哈希存储桶编号的主 AMP 的标识号。 当没有值通过 HASHAMP 函数时,它返回的数字小于当前系统配置中 AMP 的数量。 语法 3. HASHBUCKET: HASHBUCKET 函数生成与哈希映射一起使用的 16 位二进制哈希存储桶,以确定存储和检索数据行的 AMP。 这些值的范围从 0 到 1,048,575,不包括 NULL 作为可能的结果。 语法 4. HASHBAKAMP: HASHBAKAMP 函数返回任何哈希存储桶编号的回退 AMP 的标识号。 语法 哈希冲突哈希冲突是指不同行的 rowhash 值相同的情况,这使得系统在从一组哈希同义词中请求检索一个唯一的行时难以区分哈希同义词。 最小化哈希冲突 为了最大程度地减少哈希冲突问题,Teradata 数据库定义了 42 亿个哈希值。 AMP 软件将系统生成的 32 位唯一性值添加到 rowhash 值。 结果得到的 64 位值带有内部分区号的前缀,称为 rowID。 此值唯一地标识系统中的每一行,使得在具有相同 rowhash 值的多个行中扫描以检索特定行成为一项简单的任务。 扫描必须检查每一行,以确定它是否具有搜索到的值,而不是另一个具有相同 rowhash 值的值。 哈希映射哈希映射是一种用于确定将行存储在哪个 AMP 上的机制,或者,在 Open PDE 哈希映射的情况下,用于确定由解析器子系统发送的消息的目标 AMP。 映射数组中的每个单元格对应于一个哈希存储桶,并且每个哈希存储桶都被分配给一个 AMP。 哈希映射条目由 BYNET 维护。 下一个主题Teradata 连接策略 |
我们请求您订阅我们的新闻通讯以获取最新更新。