-shm и-Wal файлы в SQLite БД
Я беру резервную копию SQLite DB с помощью CP commmand после запуска wal_checkpoint (FULL). БД используется в режиме WAL, поэтому в моей папке есть другие файлы, такие как-shm и-wal. Когда я запускаю wal_checkpoint (FULL), изменения в файле WAL фиксируются в базе данных. Мне интересно, будут ли файлы-wal и-shm удаляться после запуска контрольной точки. Если нет, то что они содержат ?
Я знаю, что мой процесс резервного копирования не хорош, так как я не использую SQLite backup APIs. Это ошибка в моем коде.
Может ли кто-нибудь предложить, какой контент содержат файлы do-shm и-wal после запуска checkpoint.
любая предоставленная ссылка будет полезна.
спасибо
2 ответов
после поиска по многочисленным источникам, я считаю, что верно следующее:
- на
-shm
файл содержит индекс к . The-shm
файл улучшает производительность при чтении . - если
-shm
файл удаляется, он создается снова во время следующего доступа к базе данных. - если
checkpoint
программа-wal
файл можно удалить.
выполнить безопасный резервные копии:
- рекомендуется использовать функции резервного копирования SQLite для создания резервных копий. Библиотека SQLite может даже создавать резервные копии онлайн-базы данных.
- если вы не хотите использовать (1), то лучший способ-закрыть базу данных ручками. Это обеспечивает чистое и согласованное состояние файла базы данных и удаляет
-shm
и-wal
файлы. Потом резервную копию можно сделать с помощьюcp
,scp
etc. - если файл базы данных SQLite предназначен для передачи по сети, то вакууме команда должна выполняться после
checkpoint
. Это удаляет фрагментацию в файле базы данных, тем самым уменьшая его размер, поэтому вы передаете меньше данных через сеть.
на -shm
файл не содержит постоянных данных.
когда последнее соединение закрыто, база данных автоматически проверяется и -wal
файл затем удаляется.
Это означает, что после контрольной точки, и если никаких других соединений не существует,-wal
файл не содержит важных данных.
Если возможно, вы должны закрыть соединение перед созданием резервной копии.