Logging write-ahead della compatibilità per le app

Android 9 introduce una modalità speciale Database SQLite chiamato Compatibility write-ahead logging (WAL), che consente a un database di utilizzare journal_mode=WAL preservando il comportamento di mantenere al massimo uno connessione per database.

Il WAL di compatibilità è abilitato per il database di un'app per impostazione predefinita, a meno che la ha:

  1. Attiva o disattiva il logging write-ahead chiamando SQLiteDatabase.enableWriteAheadLogging o disableWriteAheadLogging
  2. Richiesta esplicita della modalità journal chiamando SQLiteDatabase.OpenParams.setJournalMode(String mode)

L'attivazione della modalità journal WAL può portare a un miglioramento significativo delle prestazioni e della riduzione del numero di scritture. Ad esempio, su un file ext4 file system, WAL può portare a un miglioramento di 4 volte della velocità di scrittura.

La compatibilità WAL è abilitata per impostazione predefinita e non richiede altre implementazione.

.

Disattiva Compatibilità WAL

Per disattivare la modalità WAL di compatibilità, sovrapponi la db_compatibility_wal_supported di configurazione della risorsa.

Ad esempio:

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

Ti consigliamo di disattivare il WAL di compatibilità per le configurazioni in cui il WAL la modalità journal non offre un vantaggio in termini di prestazioni rispetto al rollback tradizionale. modalità diario. Ad esempio, su un file system F2FS, sebbene SQLite supporti le scritture atomiche e le prestazioni del diario DELETE sono simili a quelle del WAL, WAL può aumentare la quantità delle scritture dal 10% al 15%.

Convalida

Per convalidare la modalità WAL di compatibilità, esegui Test CCT dal modulo CtsDatabaseTestCases. I test CTS verificheranno il livello previsto il comportamento corretto quando è abilitato Compatibilità WAL.