为什么LMDB数据库占用的数据超过实际数据?

时间:2017-05-11 09:53:00

标签: database leveldb lmdb sparse-file nosql

我在LMDB数据库中放了大约11K密钥和值。 LMDB数据库文件大小变为21Mb。

对于相同的数据,leveldb仅采用8Mb(带有快速压缩)。

LMDB env info,

VERSION=3
format=bytevalue
type=btree
mapsize=1073741824
maxreaders=126
db_pagesize=4096

要检查为什么LMDB文件大小更多,我遍历所有键和&里面的价值观 数据库。所有关键&的总大小价值是10Mb。

但是文件的实际大小是21Mb。 剩余文件大小为11Mb(21Mb - 10Mb)用于什么目的??? !!

如果我在放置操作之前压缩数据,只有2Mb减少

为什么LMDB数据库文件大小超过实际数据大小?

任何缩小方法?

1 个答案:

答案 0 :(得分:0)

数据库大于原始文件,因为lmdb需要做一些布尔操作来保持数据排序。同样,这也会产生开销,因为即使您的记录(键+值)是1kb,lmdb也会分配固定大小的空间来存储这些记录。我不知道实际值。但是总是会产生这种开销。

在小记录上压缩效果不佳。

lmdb不支持前缀或块压缩。最好的选择是使用像wiredtiger这样的键值存储。