web-dev-qa-db-ja.com

Androidの「-journal」SQLiteデータベースとは何ですか?

私のandoidアプリケーションのデータベースディレクトリ(/data/data/com.me.myApp/databases)では、作成するすべてのsqliteデータベースに対して、名前に「-journal」が追加された同じ名前の対応するデータベースがあります。

例:myDatabase、myDatabase-journal、myOtherDatabase.db、myOtherDatabase.db-journal

これは何ですか?

そして、

アプリ用に事前に入力されたデータベースを提供している場合(次のとおり: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-Android-applications/ =)これらも含める必要がありますか?」

24
ddouglascarr

そのような -journalファイルを配布する必要はありません(また、not)する必要はありません。

これは、さまざまなジャーナルファイルが、SQLiteによって使用される一時データ(ref。 SQLiteの一時ディスクファイルの使用 )を表すためです。特に、-journalファイルはrollback journalです。

ロールバックジャーナルは、SQLiteでアトミックコミットおよびロールバック機能を実装するために使用される一時ファイルです。 (この仕組みの詳細については、Atomic Commit In SQLiteというタイトルの別のドキュメントを参照してください。)ロールバックジャーナルは常にデータベースファイルと同じディレクトリにあり、8文字を除いてデータベースファイルと同じ名前です。 -journal」が追加されました。

通常、ロールバックジャーナルは、トランザクションが最初に開始されたときに作成され、通常、トランザクションがコミットまたはロールバックされるときに削除されます。ロールバックジャーナルファイルは、SQLiteのアトミックコミットおよびロールバック機能を実装するために不可欠です。ロールバックジャーナルがないと、SQLiteは不完全なトランザクションをロールバックできず、トランザクションの途中でクラッシュまたは電源喪失が発生した場合、データベース全体がロールバックジャーナルなしで破損する可能性があります。

一般的にこれら-journalファイルが存在する必要がありますwhenSQLiteデータベースが開いている場合-または、実行中のトランザクション-しかし、 PRAGMA journal_mode 。デフォルトのプラグマ設定では、-journalファイルが削除されます。

DELETEジャーナリングモードは通常の動作です。 DELETEモードでは、各トランザクションの終了時にロールバックジャーナルが削除されます。実際、削除操作はトランザクションをコミットさせるアクションです。

データベースがnotの場合、実際のデータベースファイルをonlyコピーするようにしてくださいSQLite自体によって開かれ、すべてのジャーナルが削除(またはクリア)されている。これは、すべてのトランザクションが完了し、データベースが一貫した状態にあることを意味します。

23
user2864740