sql >> データベース >  >> RDS >> SQLite

Android SQLite Journalの動作が変更されましたか?

    @CLは正しいですが、ジャーナルモードはAPIレベルに応じて変化するようです(おそらくメーカーによっても変化しますか?)。

    ただし、今後の参考のために、いくつかのAPIレベルでjournal_modeについてデータベースにクエリを実行したところ、結果は次のようになりました。

    • Android 2.3.7(API 10)=削除
    • Android 4.0.4(API 15)=切り捨て
    • Android 4.1.1(API 16)=永続化
    • Android 4.3.0(API 18)=永続化
    • Android 4.4.4(API 19)=永続化
    • Android 5.0.0(API 21)=永続化
    • Android 5.1.0(API 22)=永続化

    ジャーナルモードを取得するためのコード:

    Cursor c = db.rawQuery("PRAGMA journal_mode;", null);
    c.moveToFirst();
    String journalMode = c.getString(c.getColumnIndex("journal_mode"));
    

    ジャーナルモードについて:

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

    TRUNCATEジャーナリングモードは、ロールバックジャーナルを削除するのではなく、長さをゼロに切り捨てることによってトランザクションをコミットします。多くのシステムでは、含まれているディレクトリを変更する必要がないため、ファイルの切り捨てはファイルの削除よりもはるかに高速です。

    PERSISTジャーナルモードは、各トランザクションの終了時にロールバックジャーナルが削除されるのを防ぎます。代わりに、ジャーナルのヘッダーはゼロで上書きされます。これにより、他のデータベース接続がジャーナルをロールバックするのを防ぐことができます。 PERSISTジャーナリングモードは、ファイルの最初のブロックをゼロで上書きするよりも、ファイルの削除または切り捨ての方がはるかにコストがかかるプラットフォームでの最適化として役立ちます。

    詳細



    1. SQLで列の値を合計する方法は?

    2. Railsモデルで複数のPostgreSQLスキーマを使用する

    3. MicrosoftAccessのレポートにヘッダーとフッターを追加する方法

    4. SQLでのテーブルのピボット(クロス集計/クロス集計)