Android 9 memperkenalkan mode khusus
SQLiteDatabase
yang disebut pencatatan aktivitas sebelum penulisan (WAL) Kompatibilitas yang memungkinkan database menggunakan
journal_mode=WAL
sambil mempertahankan perilaku untuk mempertahankan maksimum satu
koneksi per database.
WAL Kompatibilitas diaktifkan untuk database aplikasi secara default, kecuali jika aplikasi memiliki salah satu dari berikut:
- Mengaktifkan atau menonaktifkan logging write-ahead dengan memanggil
SQLiteDatabase.enableWriteAheadLogging
ataudisableWriteAheadLogging
- Mode jurnal diminta 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 menghasilkan peningkatan kecepatan tulis 4x lipat.
WAL Kompatibilitas diaktifkan secara default dan tidak memerlukan penerapan tambahan.
Menonaktifkan WAL Kompatibilitas
Untuk menonaktifkan mode WAL Kompatibilitas, overlay
db_compatibility_wal_supported
resource konfigurasi.
Contoh:
<bool name="db_compatibility_wal_supported">false</bool>
Anda dapat menonaktifkan WAL Kompatibilitas 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 serupa dengan WAL, WAL dapat meningkatkan jumlah penulisan sebesar 10% hingga 15%.
Validasi
Untuk memvalidasi mode WAL Kompatibilitas, jalankan uji CTS dari modul CtsDatabaseTestCases. Pengujian CTS akan memverifikasi perilaku yang diharapkan saat WAL Kompatibilitas diaktifkan.