Снимок SQLite: исправная запись не гарантирует свежий экран оператора

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

В WAL-режиме читающая транзакция SQLite видит согласованный снимок состояния на момент её начала. Другой connection может уже зафиксировать новые измерения, но прежний читатель продолжит видеть свой снимок до завершения транзакции. Это предусмотренная изоляция, а не обязательно потеря входящего потока.

Для длительного отчёта такое поведение полезно: значения относятся к согласованному представлению базы. Для экрана текущей телеметрии оно может быть неожиданным. Если приложение многократно выполняет SELECT внутри одной долго открытой транзакции, обновление виджета не обязательно создаёт новое представление записанных данных.

Проект различает согласованность отчёта и свежесть текущего экрана. Определяют момент завершения читающей транзакции, получения следующего снимка и отображения времени последней записи. Изоляцию connection не следует путать с достоверностью датчика: согласованный снимок способен содержать давно полученные либо ошибочные измерения.

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

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

Запросить

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

Флаг России Флаг Казахстана
office@omegasolutions.ru

Все запросы только на email