SQLite: есть ли способ использовать WAL без функции mmap ()?

Я хочу использовать режим WAL из соображений производительности и надежности. Однако в моей среде нет функции mmap (), поэтому я не могу скомпилировать SQLite с помощью WAL (для WAL требуется mmap ().). Хотя настройка PRAGMA locking_mode=EXCLUSIVE разрешает использование WAL без mmap () (в этом случае WAL-индекс создается в памяти кучи, а не в совместно используемом файле), это не лучшее решение для приложений, которые управляют несколькими соединениями с базой данных.

Я использую SQLite с несколькими подключениями к базе данных (для межпоточного параллелизма) в одном процессе, а mmap (), похоже, используется только для совместного использования памяти между процессами. Поскольку я ожидаю, что есть способ использовать WAL без mmap () в однопроцессной среде. Но я не могу найти хорошее решение. Есть какие-нибудь идеи по решению этой проблемы?

Спасибо.


person sasaji    schedule 08.05.2014    source источник


Ответы (1)


Код в SQLibrary всегда создает файл с отображением памяти для wal-index.

Если вы хотите использовать WAL без mmap, вам нужно изменить этот код, чтобы вместо этого использовать простой блок разделяемой памяти.

person CL.    schedule 08.05.2014