-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 ответов


после поиска по многочисленным источникам, я считаю, что верно следующее:

  1. на -shm файл содержит индекс к . The -shm файл улучшает производительность при чтении .
  2. если -shm файл удаляется, он создается снова во время следующего доступа к базе данных.
  3. если checkpoint программа -wal файл можно удалить.

выполнить безопасный резервные копии:

  1. рекомендуется использовать функции резервного копирования SQLite для создания резервных копий. Библиотека SQLite может даже создавать резервные копии онлайн-базы данных.
  2. если вы не хотите использовать (1), то лучший способ-закрыть базу данных ручками. Это обеспечивает чистое и согласованное состояние файла базы данных и удаляет -shm и -wal файлы. Потом резервную копию можно сделать с помощью cp, scp etc.
  3. если файл базы данных SQLite предназначен для передачи по сети, то вакууме команда должна выполняться после checkpoint. Это удаляет фрагментацию в файле базы данных, тем самым уменьшая его размер, поэтому вы передаете меньше данных через сеть.

на -shm файл не содержит постоянных данных.

когда последнее соединение закрыто, база данных автоматически проверяется и -wal файл затем удаляется. Это означает, что после контрольной точки, и если никаких других соединений не существует,-wal файл не содержит важных данных.

Если возможно, вы должны закрыть соединение перед созданием резервной копии.