BerkeleyDB - 错误排序顺序的含义?

时间:2012-02-01 10:59:14

标签: berkeley-db

根据这个FAQ,不指定little-endian系统上的二进制数据的排序函数会对页面填充因子产生不利影响。我知道它也会导致游标不以“正确”的排序顺序返回数据。

除了过多的页面使用,这是否会导致任何其他性能问题?例如,较差的页面填充因子是否会对键查找的速度产生负面影响?

此外,如果我已经将数据存储在BTREE 而没有排序功能,那么如果我随后开始使用排序功能添加新记录,会有什么破坏吗?即最初使用的排序顺序和新的排序函数之间的不匹配是否会破坏键查找?

1 个答案:

答案 0 :(得分:0)

是的,不正确的字符串会降低您的填充因子,因此您的数据库将变得更大,更慢。今天我用一个顺序整数键插入了大约3000万条记录,注意到非常差的btree填充因子(60%)。然后更改了键的字节顺序(使用了htonl()函数),填充因子跳跃到99%。同时,数据库大小从1.3 GB减少到700 MB。 当您的密钥是顺序的或显示某个位置(相关数据的公共前缀)时,字节顺序很重要。对于某些键,更改字节序可能会使性能恶化(我通过手机号码体验过这一点)。 顺便说一下,您不必提供排序功能 - 您可以在按键插入和搜索时将键转换为正确的字节顺序。