LMDB максимальный размер базы данных для windows

Когда я устанавливаю максимальный размер БД, например, 5 ГБ, в Windows конечный размер файла БД станет 5 ГБ, даже если я вставлю только один небольшой фрагмент данных. Но в Linux это работает нормально, окончательный размер БД связан с тем, сколько данных я вставляю.

Вот API, который я использовал, чтобы установить максимальный размер дБ

rc = ::mdb_env_set_mapsize(env, 5 * 1024 * 1024 * 1024);

То же самое для Windows и Linux. Нужно ли делать что-то другое для Windows?

1 ответ

Вот как файлы с отображением в памяти работают в Windows - если вам нужна карта размером xxGB, Windows требует, чтобы файл был размером xxGB. Windows увеличивает сам файл, если он изначально был меньше указанного размера; Обойти это невозможно.

https://msdn.microsoft.com/en-us/library/windows/desktop/aa366542%28v=vs.85%29.aspx

NTFS может поддерживать разреженные файлы, но при тестировании мы обнаружили, что поддержка разреженных файлов в Windows значительно медленнее, чем в обычных файлах, поэтому LMDB не использует их.

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