Synchronous SQLite: целая база и сохранённая последняя запись — разные требования

Фотография конкретного исполнения не приложена.

При выборе режима SQLite нужно различать непротиворечивость базы и сохранность уже подтверждённой транзакции после аварии ОС или питания. В WAL с synchronous=NORMAL база сохраняет согласованность, но последняя зафиксированная транзакция может исчезнуть после такого отказа. Это не то же самое, что отсутствие повреждения структуры файла.

FULL добавляет синхронизацию WAL после фиксации каждой транзакции. Для rollback journal режим EXTRA имеет дополнительный смысл, связанный с синхронизацией каталога после удаления журнала; в WAL EXTRA не отличается от FULL. Поэтому названия настроек нельзя сравнивать без указания journal_mode и требований к результату.

Надёжность также опирается на поведение VFS, файловой системы и носителя при сбросе данных. Настройка не отменяет аппаратные предпосылки. В проекте определяют допустимую потерю подтверждённых измерений и отделяют её от потери ещё не принятого пакета, а результаты производительности оценивают только для выбранной политики сохранности.

Приёмку проводят на согласованном тестовом хранилище с контролем последних подтверждённых пакетов после моделируемого отказа. Реальные данные в такой проверке не используют. Ускорение COMMIT само по себе не доказывает, что архив выполняет требование по сохранности записей при отключении питания.

Основание — SQLite official unversioned documentation snapshot; Download index observed 3.54.1, individual pages not version-tagged, разделы synchronous; Hardware assumptions; incomplete disk flushes. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Установленная библиотека, сборка, файловая система и база узла не проверялись. Это проектный сценарий; SQL и сервисные операции на реальных данных не выполнялись.

Запросить

Запросы отправляются на наш e-mail из вашей почтовой программы.