2

現在、Androidアプリのデータベース用にBackupHelperを開発しています。このメソッドContext.databaseList()は、私のアプリに属する​​すべてのデータベースの名前を報告します。しかし、私はメインのSQLiteデータベースファイルのほかに多くの追加ファイルを経験します(例):

  • database.db
  • database.db-journal
  • database.db-shm
  • database.db-wal

すべてのAndroidドキュメントには、データベースごとに1つのデータベースファイルが記載されていますが、この情報は古くなっているようです。

BackupHelperでこれらすべてのファイルを保存するのは保存されますか?

SQLiteは、復元後にすべてのAndroidプラットフォームでこれらのファイルを処理しますか?

よろしくお願いします。

4

1 に答える 1

2

グーグルをして、他のファイルに関する情報を見つけました:

database.db-journal

SQLiteはデフォルトで、トランザクションの開始時にジャーナルファイルを作成します。これは良いことです。通常、コミット時にファイルを削除します。

この動作を変更して、PRAGMA sqlコマンドを使用して、ファイルを単純に切り捨てる(作成/削除は不要)か、ゼロにすることができます。ご使用のバージョンのSQLiteですべてのオプションがサポートされているわけではありません。

PRAGMA journal_mode = DELETE | TRUNCATE | PERSIST | MEMORY | OFF

書き込み操作は通常、COMMITを実行するまで完了しません。これは、ジャーナルを切り捨て、削除、または無効化することによって実装されます。

この動作が新しい場合、SQLiteのアップグレードによってデフォルトの動作が変更されたか、トランザクションごとにジャーナルを再度開かないことでより洗練されたものになる以外は、なぜ変更されたのか説明できません。

ソース

database.db-shm database.db-wal

これらはSQLiteによって作成された一時ファイルです。メインデータベースを手動で削除する場合は、おそらくこれらも削除する必要があります。私が収集できることから、WALは、トランザクションが失敗したときにSQLiteが変更をロールバックできるようにするロールバックジャーナルの代わりになります。SQLiteがそれらをどのように使用し、なぜ長い間保持されるのかはSQLiteの作成者次第ですが、一般的にSQLiteはかなり堅実に見えるので、あまり心配する必要はありません。詳細については、こちらをご覧ください。

http://www.sqlite.org/fileformat2.html#walindexformat

これらのファイルはSQLite3.7の新機能です。

ソース

お役に立てば幸いです...

于 2012-11-18T16:29:15.487 に答える