Uygulamalar için uyumluluk yazma öncesi 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.

Bir uygulamanın veritabanı için uyumluluk WAL'i varsayılan olarak etkindir. Bunun için aşağıdaki durumların geçerli olması gerekir:

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

WAL günlük modunun etkinleştirilmesi performansta önemli bir artış sağlayabilir ve yazma miktarında azalma sağlayabilir. Örneğin, bir 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şımlı olarak kullanı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ırakabilirsiniz. Örneğin, bir F2FS dosya sisteminde SQLite atomik yazma işlemlerini desteklese ve DELETE günlüğü performansı WAL'e 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 testleri çalıştırın. CTS testleri, Uyumluluk WAL etkinleştirildiğinde beklenen davranışı doğrular.