[解決済み] Sqliteデータベースの拡張子.db-shmと.db-walとは何ですか?
質問内容
データベースを閉じ、削除し、テストフィクスチャに置き換えるテストをいくつか実行した後、私のアプリケーションとそのデータベースファイルの状態について、いくつかの奇妙な動作を見ています。 デバッグ用PCのツールでデータベースファイルを調べると、アプリケーション自身が報告しているようなものと一致しません。 この奇妙な動作は、もしかしたら、以下のことに関連しているのかもしれません。 このバグ .
データベースと同じベースネームのファイルが2つあることに気づきました(通常の
.db
という拡張子をつけています(笑)。 ファイルの拡張子は
.db-shm
と
.db-wal
よりも新しく、それぞれ
.db
ファイルのタイムスタンプを表示します。
これらはある種の一時的なファイルであると推測されます。 しかし、アプリケーションを終了した場合、これらは削除されるはずではありませんか? さらに重要なのは、それらに保存されているデータはすべて
.db
ファイルが作成され、OSによってアプリケーションが終了されます。 これは正しいのでしょうか?
解決方法は?
これらはSQLiteによって作成された一時的なファイルです。もしメインのDBを手動で削除しているのであれば、これらも削除した方がいいでしょう。私が調べたところでは、WALはロールバックジャーナルの代わりで、トランザクションが失敗したときにSQLiteが変更をロールバックできるようにするものです。SQLiteがそれをどのように使うのか、なぜそんなに長く残しておくのかはSQLiteの作者次第ですが、一般的にSQLiteはかなり強固なようなので、私はあまり気にしないことにしています。より詳しい情報はこちらをご覧ください。
http://www.sqlite.org/fileformat2.html#walindexformat
これらのファイルは SQLite 3.7 の新機能です。このファイルの存在がご指摘のバグに関係するかどうかは分かりませんが、バグレポートには回避方法が書かれています。
UPDATEしてください。
WALに関するより良いドキュメントはこちらです。
https://www.sqlite.org/wal.html
WALの内容は定期的にDBファイルに移動されますが、プロセス終了のたびに移動されることは保証されません。したがって、WALが有効な場合、各SQLite DBは.dbファイルと.db-walファイルの両方、保存されなければならないディスク上の2つのファイルから構成されています。
.db-shmファイルは、一時的なデータのみを格納する共有メモリファイルです。
関連
-
[解決済み】パッケージ名(Google Analytics)に一致するクライアントが見つからない - 複数のproductFlavorsとbuildTypes
-
[解決済み】新しいAVDを作成すると、CPU/ABIフィールドに「システムイメージがインストールされていません」と表示される。
-
[解決済み】ビューのルートとしてNULLを渡さないようにする(膨張したレイアウトのルート要素でレイアウトパラメータを解決する必要がある)。
-
[解決済み】Android Studioで最新バージョンのgradleを使用する方法
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] 拡張子.mdのファイルとその編集方法を教えてください。
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】OnFragmentInteractionListenerを実装する方法
-
[解決済み】インストールエラー。インストールエラー:install_failed_older_sdk
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み】Android Studioでマニフェストのマージに失敗し、複数のエラーが発生した。
-
[解決済み】プロガードを有効にすると、タスク ':app:crashlyticsStoreDeobsDebug' の依存関係を判断できない。
-
[解決済み] [Solved] java.lang.RuntimeException: アクティビティーのインスタンス化ができません ComponentInfo
-
[解決済み】sendUserActionEvent()がnullである。
-
[解決済み】アクティビティにない場所でのgetLayoutInflater()の呼び出し
-
[解決済み] setBackgroundDrawable() 非推奨