Ответ 1
После поиска по большому количеству контента я перечислил ниже пункты:
1. -shm файл содержит индекс для -wal файла. -shm улучшает производительность файла read-wal.
2. Если файл -shm удаляется, он создается снова во время следующего доступа к базе данных.
3. Если контрольная точка запущена, -wal файл может быть удален.
Безопасное резервное копирование
1. Для резервного копирования рекомендуется использовать функции резервного копирования SQLite. Библиотека SQLite имеет функции, позволяющие даже делать резервные копии онлайн-базы данных.
2. Если вы не хотите использовать (1), лучший способ - закрыть дескрипторы базы данных. Это обеспечивает чистое и согласованное состояние файла базы данных, оно также удаляет файлы -shm и -wal. Затем можно выполнить нормальную копию для резервного копирования с помощью cp, scp и т.д.
3. Если файл базы данных SQLite предназначен для передачи по сети, тогда после контрольной точки должна запускаться команда вакуум. Это позволит удалить фрагментацию в файле базы данных, тем самым уменьшив ее размер, поэтому вы переносите меньше данных через сеть. Это всего лишь предложение.
См. Ниже две хорошие строки
http://www.dbtalks.com/uploadfile/ca5be5/write-ahead-logging-concept-in-sqlite/
http://www.mentby.com/Group/sqlite-users/database-disk-image-is-malformed-37x.html