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:
SQLiteDatabase.enableWriteAheadLogging
veyadisableWriteAheadLogging
çağrısı yaparak yazma öncesi günlük kaydını etkinleştirdi veya devre dışı bıraktı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.