Существует ли ограничение для суб-баз данных в LMDB?

Публикация здесь, так как я не смог найти форумы для хранилища ключей lmdb.

Есть ли ограничение для суб-баз данных? Какое разумное количество суб-баз данных одновременно открыто?

Я хотел бы иметь ~200 баз данных, что кажется большим и ясно указывает на то, что моя модель неверна. Я предполагаю, что мог бы переделать и встроить идентификатор каждого БД в сам ключ и сохранить только один БД, но тогда у меня есть более длинные ключи, а также я не могу удалить базу данных, если это необходимо.

Мне интересно, если LMDB уже использует какие-то внутренние префиксы для ключей. Любые предложения, как решить эту проблему приветствуются.

2 ответа

Вместо того, чтобы каждый раз вызывать mdb_dbi_open, сохраняйте собственную карту с именами базы данных для дескрипторов базы данных, возвращаемых из mdb_dbi_open. Повторно используйте эти дескрипторы для жизни вашей программы. Это позволит вам иметь несколько баз данных в среде и предотвратить накладные расходы с помощью mdb_dbi_open.

Если вы читаете документацию для mdb_env_set_maxdbs.

В настоящее время умеренное количество слотов дешевое, но огромное количество становится дорогим: 7-120 слов на транзакцию, и каждый mdb_dbi_open() выполняет линейный поиск открытых слотов.

http://symas.com/mdb/doc/group__mdb.html

Лучший способ узнать это - проверить производительность вызова функции mdb_dbi_open, чтобы убедиться в ее приемлемости.

Другие вопросы по тегам