Uygulamalar için uyumluluk ön yazma günlük kaydı

Android 9, bir veritabanının veritabanı başına en fazla bir bağlantı tutma davranışını korurken journal_mode=WAL kullanmasına olanak tanıyan Uyumluluk önceden yazma günlüğü (WAL) adlı özel bir SQLiteDatabase modu sunar.

Uyumluluk WAL, uygulamada aşağıdakilerden biri yoksa varsayılan olarak uygulamanın veritabanı için etkinleştirilir:

  1. SQLiteDatabase.enableWriteAheadLogging veya disableWriteAheadLogging çağrısını yaparak yazma öncesi günlük kaydını etkinleştirin ya da devre dışı bırakın.
  2. SQLiteDatabase.OpenParams.setJournalMode(String mode) çağrısı yaparak günlük modu açıkça istendi

WAL günlük modunu etkinleştirmek, performansta önemli bir iyileşmeye ve yazma miktarında düşüşe neden olabilir. Örneğin, ext4 dosya sisteminde WAL, yazma hızında 4 kat artış sağlayabilir.

Uyumluluk WAL varsayılan olarak etkindir ve ek uygulama gerektirmez.

Uyumluluk WAL'ını devre dışı bırakma

Uyumluluk WAL modunu devre dışı bırakmak için db_compatibility_wal_supported yapılandırma kaynağını yer paylaşımı yapın.

Örnek:

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

WAL günlük modunun geleneksel geri alma günlük modlarına göre performans avantajı sağlamadığı yapılandırmalar için Uyumluluk WAL'ını devre dışı bırakmak isteyebilirsiniz. Örneğin, bir F2FS dosya sisteminde SQLite atomik yazmaları desteklese ve DELETE günlük performansı WAL'a benzer olsa da WAL, yazma miktarını% 10 ila %15 artırabilir.

Doğrulama

Uyumluluk WAL modunu doğrulamak için CtsDatabaseTestCases modülünden CTS testlerini çalıştırın. CTS testleri, Uyumluluk WAL etkinleştirildiğinde beklenen davranışı doğrular.