Рост WAL SQLite: проверить длительных читателей до удаления файлов
Фотография конкретного исполнения не приложена.
В WAL-режиме запись и чтение могут выполняться одновременно, но checkpoint должен учитывать снимки активных читателей. Длительная читающая транзакция способна помешать его завершению. Поэтому растущий WAL-файл не всегда означает, что автоматическое обслуживание вообще выключено или что писатель перестал фиксировать данные.
Порог автоматического checkpoint задаёт момент запуска, а не жёсткий предел размера файла. При постоянно перекрывающихся читателях журнал может продолжать расти. В проекте контролируют длительность отчётов и другие операции, удерживающие снимок, а также доступное место с учётом ожидаемой интенсивности телеметрии.
Для диагностики сопоставляют размер WAL с прогрессом checkpoint и временем жизни читающих транзакций. Удаление работающего WAL вручную не является способом ограничить его размер: в нём могут находиться уже подтверждённые изменения, ещё не перенесённые в основной файл. Обслуживание должно выполняться предусмотренными средствами и с понятным результатом.
В приёмке удерживают тестового читателя, продолжают ограниченную запись и наблюдают обслуживание до и после завершения чтения. Проверяют использование места и задержки. Сам по себе успешный вызов checkpoint не подтверждает, что он смог завершить всю работу при активных читателях.
Основание — SQLite official unversioned documentation snapshot; Download index observed 3.54.1, individual pages not version-tagged, разделы 2.2. Concurrency; 6. WAL size. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Установленная библиотека, сборка, файловая система и база узла не проверялись. Это проектный сценарий; SQL и сервисные операции на реальных данных не выполнялись.