DB-SHM ファイル形式とは?
.db-shm ファイルは、データベースが WAL (Write-Ahead Logging) モードで動作する際に SQLite によって自動的に作成される一時的な共有メモリインデックスファイルです。メインのデータベースファイルおよびそのコンパニオンである .db-wal ファイルと共に存在し、これら 3 つのファイルセットで WAL モードを構成します。
このファイルのサイズは 32 KB 固定で、同じ WAL モードのデータベースを共有するすべての SQLite 接続によってメモリマップされます。ここには WAL インデックスヘッダーと、WAL フレーム番号をデータベースページ番号にマッピングするハッシュテーブルが格納されており、読み取り側が WAL ファイル全体をスキャンすることなく、各ページの最新バージョンを効率的に特定できるようにします。
メインの .db ファイルとは異なり、.db-shm ファイルにはユーザーデータは保存されず、CPU アーキテクチャ間でのポータビリティもありません(バイト順序はホストマシンと一致します)。SQLite は、最初の接続が WAL モードのデータベースを開いたときに自動的に作成し、最後の接続が正常に閉じたときに削除します。クラッシュ後に残された .db-shm ファイルは、データベースが現在開かれていない場合に限り削除しても安全です。SQLite は次回のアクセス時にこれを再作成します。
排他ロックモード(exclusive locking mode)では、SQLite は代わりにヒープメモリを使用するため、.db-shm ファイルはディスクに書き込まれません。このファイルは SQLite 自体以外のツールで開いたり、意味のある形で解釈したりすることはできません。
セキュリティと安全性
リスク: LOW.db-shm ファイル自体にはユーザーデータは含まれず、意味のある解析は不可能です。実行可能なコンテンツもありません。関連する .db データベースファイルには、アプリケーションに応じて機密性の高い個人データ(メッセージ、連絡先など)が含まれている場合があります。データベースが閉じているときに古い -shm ファイルを削除するのは安全ですが、データベースが開いているときに削除すると破損の原因となる可能性があります。
形式の詳細
概要DB-SHM ファイルを開くプログラム
技術的詳細
詳細仕様| 必要な SQLite モード | WAL (Write-Ahead Logging) モード。ジャーナルモードや排他ロックモードでは作成されません |
| ファイルサイズ | 32 KB 固定(ロック領域ごとに 1 つの 32 KB ブロック) |
| バイト順序 | ホストマシンのネイティブ。CPU アーキテクチャ間の互換性なし |
| エンコーディング | バイナリ(メモリマップされた OS 構造体。スタンドアロンのシリアライズ形式ではない) |
| 内容 | WAL インデックスヘッダーおよび WAL フレーム番号をデータベースページ番号にマッピングするハッシュテーブル |
| ユーザーデータ | ユーザーデータは保存されません。コンパニオンファイル .db-wal の読み取りインデックスとして機能します |
| ライフサイクル | 最初の WAL モード接続時に自動作成。最後の正常なクローズ時に自動削除 |
| クラッシュリカバリ | データベースが開いていなければ手動削除が可能。SQLite が自動的に再作成します |
| 関連ファイル | 常にメインデータベースの .db および書き込み前方ログの .db-wal と同じ場所に配置されます |
| クラッシュ安全性メカニズム | 二重コピーされた WAL インデックスヘッダー。オープン時に両方のコピーの整合性がチェックされます |
| 排他ロックモード | SQLite は代わりにヒープメモリを使用するため、ディスクに .db-shm ファイルは書き込まれません |
| MIME タイプ | application/octet-stream(専用の MIME タイプなし) |
| 導入バージョン | SQLite WAL モード、バージョン 3.7.0 (2010年7月) |
| プラットフォーム | Android, iOS, Windows, Linux, macOS |
| リリース日 | 2010 (SQLite 3.7.0, WAL mode) |
| 最新バージョン | SQLite 3.x (current; format tied to WAL implementation) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.sqlite.org |
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。DB-SHM ファイルについて最初の質問をしてみましょう。