Logging write-ahead kompatibilitas untuk aplikasi

Android 9 memperkenalkan mode khusus SQLiteDatabase yang disebut Compatibility write-ahead logging (WAL) yang memungkinkan database menggunakan journal_mode=WALsekaligus mempertahankan perilaku untuk menyimpan maksimum satu koneksi per database.

Compatibility WAL diaktifkan untuk database aplikasi secara default, kecuali jika aplikasi memiliki salah satu dari hal berikut:

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

Mengaktifkan mode jurnal WAL dapat meningkatkan performa secara signifikan dan mengurangi jumlah penulisan. Misalnya, pada sistem file ext4, WAL dapat meningkatkan kecepatan penulisan hingga 4 kali lipat.

Compatibility WAL diaktifkan secara default dan tidak memerlukan implementasi tambahan.

Menonaktifkan Compatibility WAL

Untuk menonaktifkan mode Compatibility WAL, overlay the db_compatibility_wal_supported resource konfigurasi.

Contoh:

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

Anda mungkin ingin menonaktifkan Compatibility WAL untuk konfigurasi saat 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 Compatibility WAL, jalankan pengujian CTS dari modul CtsDatabaseTestCases. Pengujian CTS akan memverifikasi perilaku yang diharapkan saat Compatibility WAL diaktifkan.