Write-ahead logging kompatibilitas untuk aplikasi

Android 9 memperkenalkan mode khusus SQLiteDatabase yang disebut Logging write-ahead kompatibilitas (WAL) yang memungkinkan database menggunakan journal_mode=WAL sekaligus mempertahankan perilaku untuk mempertahankan maksimum satu koneksi per database.

WAL kompatibilitas diaktifkan untuk database aplikasi secara default, kecuali jika aplikasi memiliki:

  1. Mengaktifkan atau menonaktifkan logging write-ahead dengan memanggil SQLiteDatabase.enableWriteAheadLogging atau disableWriteAheadLogging
  2. Meminta mode jurnal secara eksplisit dengan memanggil SQLiteDatabase.OpenParams.setJournalMode(String mode)

Mengaktifkan mode jurnal WAL dapat menyebabkan peningkatan performa yang signifikan dan pengurangan jumlah penulisan. Misalnya, pada sistem file ext4, WAL dapat meningkatkan kecepatan tulis 4x lipat.

WAL kompatibilitas diaktifkan secara default dan tidak memerlukan penerapan tambahan.

Menonaktifkan WAL Kompatibilitas

Untuk menonaktifkan mode WAL Kompatibilitas, overlay resource konfigurasi db_compatibility_wal_supported.

Contoh:

<bool name="db_compatibility_wal_supported">false</bool>

Anda mungkin ingin menonaktifkan Compatibility WAL untuk konfigurasi yang mode jurnal WAL tidak memberikan keunggulan performa dibandingkan mode jurnal rollback tradisional. Misalnya, pada sistem file F2FS, meskipun SQLite mendukung penulisan atomik dan performa jurnal DELETE mirip dengan WAL, WAL dapat meningkatkan jumlah penulisan sebesar 10% hingga 15%.

Validasi

Untuk memvalidasi mode WAL Kompatibilitas, jalankan pengujian CTS dari modul CtsDatabaseTestCases. Pengujian CTS akan memverifikasi perilaku yang diharapkan saat Compatibility WAL diaktifkan.