Создание контрольной точки базы данных SQLITE в режиме WAL после каждой операции вставки / обновления / удаления
У меня есть база данных SQLITE внутри моего приложения Xamarin для Android, и мне нужно иметь возможность читать и писать из нее одновременно из разных потоков и / или процессов. Поэтому я пытаюсь сейчас использовать его в режиме WAL. В основном работает нормально. Ошибки SQLITE_BUSY, с которыми я сталкивался ранее, больше не возникают.
Проблема в том, что я также хотел бы иметь возможность снять эту базу данных с устройства (т.е. отправить по электронной почте) - предпочтительно в одном файле.
В режиме WAL у меня есть основной файл базы данных x.db3 вместе с x.db3-wal и x.db3-shm, что недостаточно для этой цели. Поэтому у тебя была идея исполнить pragma checkpoint(passive)
после каждой операции вставки, обновления или удаления, так что база данных почти всегда будет состоять из одного файла. В моем случае обновления редки, поэтому снижение производительности, вероятно, не проблема. Я понимаю, что на контрольно-пропускном пункте читатели не смогут прочитать данные, и я могу справиться с этим. Но в любом случае моя интуиция подсказывает мне, что это неправильный способ использовать протоколирование WAL, и поэтому я спрашиваю. Это выглядит как злоупотребление.
Буду признателен за любые идеи о проблемах, с которыми я могу столкнуться при таком подходе.