LMDB: как интерпретировать вывод утилит mdb_stat и mdb_dump - PullRequest
0 голосов
/ 23 октября 2018

У меня есть функциональная LMDB, которая в целях тестирования в настоящее время содержит только 21 запись ключа / значения.Я успешно протестировал вставку и чтение записей, и мне удобно, что база данных работает так, как задумано.

Однако, когда я использую утилиты mdb_stat и mdb_dump, я вижу следующий вывод, соответственно:

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

DATA=END

В частности, почему mdb_stat указывает только одну запись, когда у меня 21?Кроме того, каждая запись содержит 1024 x 300 значений по пять байтов на значение.mdb_dump, очевидно, не показывает где-либо около 1536 000 байтов, которые я ожидал бы увидеть, но значения I mdb_put() и mdb_get() на лету верны.Кто-нибудь знает, что происходит?

Ответы [ 2 ]

0 голосов
/ 09 августа 2019

4d65737361676573 - это Ascii для «Messages», который является именем таблицы («sub-db» в терминологии lmdb), в которой хранятся фактические данные в вашем случае.

Только команда mdb_dumpпо умолчанию создает дамп основной базы данныхВы можете использовать опцию -s, чтобы вывести этот субблок, то есть

mdb_dump -s Messages

, или вы можете использовать опцию -a, чтобы выгрузить все суббазы.

0 голосов
/ 30 октября 2018

Отношение между каталогом операционной системы и файлами data.mdb и lock.mdb среды LMDB однозначно.

Если в среде LMDB (в каталоге OS) имеется более одной базы данныхзатем среда также содержит отдельную базу данных LMDB, содержащую все свои именованные базы данных.

Утилиты mdb_stat и mdb_dump содержат минимальную логику, поэтому при подачеДля данного каталога через командную строку они, как представляется, дают результаты только для базы данных, в которой хранятся имена баз данных, а не для баз данных, в которых хранятся фактические данные, представляющие интерес.

...