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