Что такое формат файла DB-SHM?
Файл .db-shm - это эфемерный индексный файл разделяемой памяти, автоматически создаваемый SQLite, когда база данных работает в режиме WAL (Write-Ahead Logging). Он существует вместе с основным файлом базы данных и сопутствующим файлом .db-wal, образуя набор из трех файлов, необходимый для режима WAL.
Файл имеет фиксированный размер 32 КБ и отображается в память всеми соединениями SQLite, использующими одну и ту же базу данных в режиме WAL. В нем хранятся заголовки индекса WAL и хэш-таблица, сопоставляющая номера кадров WAL с номерами страниц базы данных, что позволяет читателям эффективно находить последнюю версию каждой страницы без сканирования всего файла WAL.
В отличие от основного файла .db, файл .db-shm не хранит пользовательских данных и не является переносимым между архитектурами процессоров - порядок байтов в нем соответствует хост-машине. SQLite создает его автоматически при открытии первого соединения с базой данных в режиме WAL и корректно удаляет его при закрытии последнего соединения. Оставшийся после сбоя файл .db-shm можно безопасно удалить, если база данных в данный момент не открыта; SQLite воссоздаст его при следующем обращении.
В режиме эксклюзивной блокировки SQLite вместо этого использует память кучи, поэтому файл .db-shm не записывается на диск. Файл не может быть открыт или осмысленно интерпретирован никаким инструментом, кроме самой SQLite.
Безопасность и защита
РИСК: LOWСам файл .db-shm не содержит пользовательских данных и не может быть осмысленно проанализирован. Не содержит исполняемого контента. Связанный файл базы данных .db может содержать конфиденциальные личные данные (сообщения, контакты и т. д.) в зависимости от приложения. Удаление устаревшего файла -shm (когда база данных закрыта) безопасно; удаление при открытой базе данных может привести к повреждению.
Детали формата
в двух словахПрограммы, открывающие файлы DB-SHM
Технические подробности
глубокая спецификация| Требуемый режим SQLite | Режим WAL (Write-Ahead Logging); не создается в режиме журнала или эксклюзивной блокировки |
| Размер файла | Фиксированный 32 КБ (один блок 32 КБ на регион блокировки) |
| Порядок байтов | Нативный для хост-машины; не переносим между архитектурами процессоров |
| Кодировка | Бинарная (структуры ОС, отображаемые в память; не является автономным сериализованным форматом) |
| Содержимое | Заголовки индекса WAL и хэш-таблица сопоставления номеров кадров WAL с номерами страниц базы данных |
| Пользовательские данные | Не содержит пользовательских данных; функционирует как индекс чтения сопутствующего файла .db-wal |
| Жизненный цикл | Автоматически создается при открытии первого соединения в режиме WAL; автоматически удаляется при последнем корректном закрытии |
| Восстановление после сбоя | Безопасно удалять вручную, если база данных не открыта; SQLite воссоздает его автоматически |
| Сопутствующие файлы | Всегда располагается рядом с основной базой данных .db и журналом упреждающей записи .db-wal |
| Механизм защиты от сбоев | Двойная копия заголовка индекса WAL; обе копии проверяются на согласованность при открытии |
| Режим эксклюзивной блокировки | SQLite использует память кучи; файл .db-shm не записывается на диск |
| MIME-тип | application/octet-stream (выделенный MIME-тип отсутствует) |
| Представлен в | SQLite режим WAL, версия 3.7.0 (июль 2010 г.) |
| Платформа | Android, iOS, Windows, Linux, macOS |
| Выпущен | 2010 (SQLite 3.7.0, WAL mode) |
| Последняя версия | SQLite 3.x (current; format tied to WAL implementation) |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.sqlite.org |
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах DB-SHM.