Write-ahead logging kompatibilitas untuk aplikasi

Android 9 memperkenalkan mode khusus SQLiteDatabase yang disebut {i>Compatibility write-ahead logging<i} (WAL) yang memungkinkan {i>database<i} journal_mode=WAL sekaligus mempertahankan perilaku maksimum satu koneksi per database.

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

  1. Mengaktifkan atau menonaktifkan write-ahead logging 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 yang signifikan dalam performa dan pengurangan jumlah operasi tulis. Misalnya, di ext4 sistem file, WAL dapat meningkatkan kecepatan tulis 4x lipat.

WAL Kompatibilitas diaktifkan secara default dan tidak memerlukan terlepas dari implementasi layanan.

Nonaktifkan WAL Kompatibilitas

Untuk menonaktifkan mode WAL Kompatibilitas, tempatkan db_compatibility_wal_supported resource konfigurasi.

Contoh:

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

Anda mungkin ingin menonaktifkan Compatibility WAL untuk konfigurasi tempat WAL mode jurnal tidak memberikan keunggulan performa dibandingkan rollback mode jurnal. Misalnya, pada sistem file F2FS, meskipun SQLite mendukung penulisan atomik dan kinerja jurnal DELETE mirip dengan WAL, WAL dapat meningkatkan jumlah operasi tulis sebesar 10% hingga 15%.

Validasi

Untuk memvalidasi mode WAL Kompatibilitas, jalankan Uji CTS dari modul CtsDatabaseTestCases. Tes CTS akan memverifikasi pengalaman perilaku standar saat WAL Kompatibilitas diaktifkan.