SQLite WAL: включить журнал предзаписи
Режим WAL (write-ahead log) позволяет SQLite выполнять чтение одновременно с записью: изменения сначала попадают в журнал, а затем переносятся в основной файл при checkpoint. Это подходит для локальной базы, когда читатели не должны ждать завершения короткой записи. В WAL всё равно работает только один writer одновременно.
Переключить и проверить режим
Выполните команды для открытого файла базы данных:
PRAGMA journal_mode = WAL;
PRAGMA journal_mode;Первая команда возвращает фактически выбранный режим; проверьте, что результат — wal. Если база не может переключиться, значение останется другим. Переключение меняет состояние базы, поэтому заранее сделайте резервную копию и не запускайте пример на production без согласованного окна.
WAL создаёт дополнительные файлы -wal и -shm, пока база используется. Не копируйте только основной .db файл при открытых соединениях: для резервирования используйте SQLite Backup API или корректно закройте подключения. Все процессы должны обращаться к WAL-базе с одного компьютера; сетевые файловые системы для этого режима не подходят.
Официальная документация: Write-Ahead Logging.