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:
- Attiva o disattiva il logging write-ahead chiamando
SQLiteDatabase.enableWriteAheadLogging
odisableWriteAheadLogging
- Modalità di diario richiesta esplicitamente chiamando
SQLiteDatabase.OpenParams.setJournalMode(String mode)
L'attivazione della modalità di log WAL può portare a un miglioramento significativo delle prestazioni e alla riduzione della quantità di scritture. Ad esempio, su un file system ext4, WAL può portare a un miglioramento della velocità di scrittura di quattro volte.
La WAL di compatibilità è abilitata per impostazione predefinita e non richiede alcuna implementazione aggiuntiva.
.Disattiva Compatibilità WAL
Per disattivare la modalità WAL compatibilità, sovrapponi la risorsa di configurazione db_compatibility_wal_supported
.
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, anche se SQLite supporta le scritture atomiche e le prestazioni del log DELETE sono simili a quelle del WAL, il WAL può aumentare la quantità di scritture dal 10% al 15%.
Convalida
Per convalidare la modalità WAL di compatibilità, esegui Test CCT dal modulo CtsDatabaseTestCases. I test CTS verificheranno il comportamento previsto quando è attivata la WAL di compatibilità.