Co to jest format pliku DB-SHM?
Plik .db-shm to efemeryczny plik indeksu pamięci współdzielonej, tworzony automatycznie przez SQLite, gdy baza danych pracuje w trybie WAL (Write-Ahead Logging). Istnieje on obok głównego pliku bazy danych i towarzyszącego mu pliku .db-wal, tworząc razem zestaw trzech plików wymagany przez tryb WAL.
Plik ma stały rozmiar 32 KB i jest mapowany w pamięci przez wszystkie połączenia SQLite współdzielące tę samą bazę danych w trybie WAL. Przechowuje on nagłówki indeksu WAL oraz tablicę mieszającą mapującą numery ramek WAL na numery stron bazy danych, co pozwala czytelnikom na efektywne lokalizowanie najnowszej wersji każdej strony bez konieczności skanowania całego pliku WAL.
W przeciwieństwie do głównego pliku .db, plik .db-shm nie przechowuje żadnych danych użytkownika i nie jest przenośny między architekturami procesorów - jego kolejność bajtów odpowiada maszynie hosta. SQLite tworzy go automatycznie, gdy pierwsze połączenie otwiera bazę danych w trybie WAL, i usuwa go w sposób czysty, gdy ostatnie połączenie zostaje zamknięte. Pozostały po awarii plik .db-shm można bezpiecznie usunąć, pod warunkiem, że baza danych nie jest aktualnie otwarta; SQLite odtworzy go przy następnym dostępie.
W trybie blokowania wyłącznego (exclusive locking mode) SQLite używa zamiast tego pamięci sterty, więc żaden plik .db-shm nie jest zapisywany na dysku. Plik nie może być otwarty ani zinterpretowany w sensowny sposób przez żadne narzędzie inne niż samo SQLite.
Bezpieczeństwo
RYZYKO: LOWSam plik .db-shm nie zawiera danych użytkownika i nie może być sensownie parsowany. Brak treści wykonywalnych. Powiązany plik bazy danych .db może zawierać wrażliwe dane osobowe (wiadomości, kontakty itp.) w zależności od aplikacji. Usuwanie nieaktualnego pliku -shm (gdy baza jest zamknięta) jest bezpieczne; usuwanie go, gdy baza jest otwarta, może spowodować uszkodzenie danych.
Szczegóły formatu
w pigułceProgramy otwierające pliki DB-SHM
Szczegóły techniczne
specyfikacja| Wymagany tryb SQLite | Tryb WAL (Write-Ahead Logging); nie jest tworzony w trybie dziennika (journal) ani blokowania wyłącznego |
| Rozmiar pliku | Stały 32 KB (jeden blok 32 KB na region blokady) |
| Kolejność bajtów | Natywna dla maszyny hosta; nieprzenośna między architekturami procesorów |
| Kodowanie | Binarne (struktury OS mapowane w pamięci; nie jest to samodzielny format serializowany) |
| Zawartość | Nagłówki indeksu WAL i tablica mieszająca mapująca numery ramek WAL na numery stron bazy danych |
| Dane użytkownika | Nie przechowuje danych użytkownika; pełni funkcję indeksu odczytu towarzyszącego pliku .db-wal |
| Cykl życia | Tworzony automatycznie przy otwarciu pierwszego połączenia w trybie WAL; usuwany automatycznie przy ostatnim poprawnym zamknięciu |
| Odzyskiwanie po awarii | Bezpieczny do ręcznego usunięcia, jeśli baza danych nie jest otwarta; SQLite odtwarza go automatycznie |
| Pliki towarzyszące | Zawsze znajduje się w tej samej lokalizacji co główna baza danych .db i dziennik .db-wal |
| Mechanizm bezpieczeństwa przy awarii | Podwójna kopia nagłówka indeksu WAL; obie kopie sprawdzane pod kątem spójności przy otwarciu |
| Tryb blokowania wyłącznego | SQLite używa zamiast tego pamięci sterty; żaden plik .db-shm nie jest zapisywany na dysku |
| Typ MIME | application/octet-stream (brak dedykowanego typu MIME) |
| Wprowadzony w | Tryb SQLite WAL, wersja 3.7.0 (lipiec 2010) |
| Platforma | Android, iOS, Windows, Linux, macOS |
| Wydano | 2010 (SQLite 3.7.0, WAL mode) |
| Najnowsza wersja | SQLite 3.x (current; format tied to WAL implementation) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.sqlite.org |
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki DB-SHM.