Kompatibilitas WAL (Write-Ahead Logging) untuk Aplikasi

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

Kompatibilitas WAL diaktifkan untuk database aplikasi secara default kecuali jika aplikasi memiliki:

  1. Ikut serta atau keluar dari logging write-ahead dengan memanggil SQLiteDatabase.enableWriteAheadLogging atau disableWriteAheadLogging
  2. Mode jurnal yang diminta secara eksplisit dengan memanggil SQLiteDatabase.OpenParams.setJournalMode(String mode)

Mengaktifkan mode jurnal WAL dapat menghasilkan peningkatan kinerja yang signifikan dan pengurangan jumlah penulisan. Misalnya, pada sistem file ext4, WAL dapat menghasilkan peningkatan 4x dalam kecepatan tulis.

Kompatibilitas WAL diaktifkan secara default dan tidak memerlukan implementasi tambahan.

Menonaktifkan Kompatibilitas WAL

Untuk menonaktifkan mode WAL Kompatibilitas, overlay sumber daya konfigurasi yang db_compatibility_wal_supported .

Sebagai contoh:

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

Anda mungkin ingin menonaktifkan WAL Kompatibilitas untuk konfigurasi di mana mode jurnal WAL tidak memberikan keunggulan kinerja dibandingkan mode jurnal rollback tradisional. Misalnya, pada sistem file F2FS, meskipun SQLite mendukung penulisan atom dan kinerja 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. Tes CTS akan memverifikasi perilaku yang diharapkan saat WAL Kompatibilitas diaktifkan.