SAP IQ 16 ROWID分配

2020-09-20 09:05发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在执行从IQ ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在执行从IQ 15.4到IQ 16.1 sp02 pl04的数据迁移。

在我的IQ 15表中,ROWID是完全顺序的,即行计数与max(rowid)始终匹配。

将数据迁移到我的IQ 16.1表时,即使两个系统上的行数都匹配,ROWID也不会连续,并且行数与max(rowid)不匹配。 此外,当行数超过一定数量时,IQ 16.1中的行标识符分配总是存在巨大的缺口-为什么会发生这种情况?

为什么上述IQ引擎之间的行为差​​异对我们很重要? 使用哈希md5函数(在IQ 15表和IQ 16表之间)执行数据验证比较时,我得到的校验和值不匹配。 这是因为IQ 16表上的ROWID包含巨大的空白,并且由于为行分配了不同的rowid,这些行值的顺序已更改,因此(有序与无序)值列表上的校验和很明显 不匹配。

我可以了解内部rowid是否不同,但这会影响IQ 16表中行的顺序,其中没有主键或已定义的顺序,因此我不能依靠md5哈希函数来验证数据 比较目的。

任何帮助或想法,将不胜感激。

此致

Asif。

4条回答
d56caomao
2020-09-20 09:43

嗨,Asif,

如果没有ORDER BY子句,则SAP IQ无法保证查询输出或表中的行顺序。

有几个原因导致ROWID不能连续出现并且存在间隙,但是最有可能是并行数据插入。 SAP IQ将为每个线程分配一个ROWID块,因此不会发生冲突。 这样可以更快地插入表中。

ROWID不能用作主键或特定数据标识符,也不保证它是顺序的或无间隙的,并且将特定的ROWID与特定的数据行匹配不应成为数据的一部分 完整性检查。

-Kirby

一周热门 更多>