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:
- Memilih ikut atau tidak ikut write-ahead logging dengan memanggil
SQLiteDatabase.enableWriteAheadLoggingataudisableWriteAheadLogging - 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.