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, вы должны изменить этот код, чтобы вместо него использовать обычный блок совместно используемой памяти.

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