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:
- Mengaktifkan atau menonaktifkan logging write-ahead dengan memanggil
SQLiteDatabase.enableWriteAheadLogging
ataudisableWriteAheadLogging
- 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.