Kompatibilitas write-ahead logging untuk aplikasi

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

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

  1. Ikut serta atau tidak ikut serta dalam pencatatan 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 meningkatkan kecepatan tulis sebesar 4x.

Kompatibilitas WAL diaktifkan secara default dan tidak memerlukan implementasi tambahan apa pun.

Nonaktifkan Kompatibilitas WAL

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

Misalnya:

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

Anda mungkin ingin menonaktifkan Kompatibilitas WAL 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 Kompatibilitas WAL, jalankan pengujian CTS dari modul CtsDatabaseTestCases. Tes CTS akan memverifikasi perilaku yang diharapkan ketika WAL Kompatibilitas diaktifkan.