首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LMDB:如何解释mdb_stat和mdb_dump实用程序的输出

问LMDB:如何解释mdb_stat和mdb_dump实用程序的输出
EN

Stack Overflow用户
提问于 2018-10-23 10:40:27
回答 3查看 687关注 0票数 2

我有一个功能性的LMDB,出于测试目的,它当前只包含21个键/值记录。我已经成功地测试了插入和读取记录,并且我对数据库的正常工作感到满意。

但是,当我使用mdb_stat和mdb_dump实用程序时,我分别看到以下输出:

代码语言:javascript
复制
Status of Main DB
   Tree depth: 1
   Branch pages: 0
   Leaf pages: 1
   Overflow pages: 0
   Entries: 1

VERSION=3
format=bytevalue
type=btree
mapsize=1073741824
maxreaders=126
db_pagesize=4096
HEADER=END
4d65737361676573

000000000000010000000000000000000100000000000000d81e0000000000001500000000000000ba1d000000000000

代码语言:javascript
复制
DATA=END

特别是,当我有21个条目时,为什么mdb_stat只指示一个条目?此外,每个条目包括1024×300个值,每个值5个字节。mdb_dump显然没有显示出我期望看到的1,536,000字节,但是I mdb_put()和mdb_get()的值是正确的。有人知道是怎么回事吗?

EN

回答 3

Stack Overflow用户

发布于 2018-10-30 08:09:44

操作系统目录与LMDB环境的data.mdb和lock.mdb文件之间是一对一的关系。

如果LMDB环境(在OS目录中)有多个数据库,则该环境还包含一个单独的LMDB数据库,其中包含其所有已命名的数据库。

mdb_stat和mdb_dump实用程序似乎包含最小的逻辑,因此当通过命令行向它们提供给定的目录时,它们似乎只为存储数据库名称的数据库生成结果,而不为存储感兴趣的实际数据的数据库生成结果。

票数 2
EN

Stack Overflow用户

发布于 2019-08-09 15:19:22

4d65737361676573是“消息”的Ascii,它是存储案例中实际数据的表(在lmdb术语中为“sub-db”)的名称。

默认情况下,mdb_dump命令仅转储主数据库。您可以使用-s选项转储该子数据库,即

代码语言:javascript
复制
mdb_dump -s Messages

也可以使用-a选项转储所有子数据库。

票数 2
EN

Stack Overflow用户

发布于 2019-10-05 12:41:51

由于您正在使用子数据库,因此主数据库中的条目数量与您创建的子数据库的数量相对应(即只有1个)。

尝试使用mdb_stat -a。这将向您显示所有子数据库(以及主DB)的分解。在这个细目中,它将列出每个子数据库的条目数量。在这里,您应该会看到您的21个条目。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52940399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档