Android 9 introduit un mode spécial
SQLiteDatabase
appelée Compatibility Write-Ahead Logging (WAL)
permet à une base de données d'utiliser
journal_mode=WAL
tout en conservant le comportement de 1
connexion par base de données.
Le WAL de compatibilité est activé par défaut pour la base de données d'une application, sauf si l'application :
- Activer ou désactiver la journalisation WAL (Write-Ahead Logging) en appelant
SQLiteDatabase.enableWriteAheadLogging
oudisableWriteAheadLogging
- Mode journal explicitement demandé en appelant
SQLiteDatabase.OpenParams.setJournalMode(String mode)
L'activation du mode journal WAL peut entraîner une amélioration significative des performances et une réduction de la quantité d'écritures. Par exemple, sur une extension système de fichiers, WAL peut entraîner une vitesse d’écriture quatre fois supérieure.
Les fichiers WAL de compatibilité sont activés par défaut et ne nécessitent aucune la mise en œuvre.
Désactiver le WAL de compatibilité
Pour désactiver le mode WAL de compatibilité, superposez les
db_compatibility_wal_supported
ressource de configuration.
Exemple :
<bool name="db_compatibility_wal_supported">false</bool>
Vous pouvez désactiver les fichiers de configuration WAL de compatibilité pour les configurations où le mode journal n'offre aucun avantage en termes de performances par rapport au rollback traditionnel de journal intime. Par exemple, sur un système de fichiers F2FS, bien que SQLite accepte des écritures atomiques et que les performances du journal DELETE sont similaires à celles de WAL, WAL peut augmenter la quantité d'écritures de 10% à 15%.
Validation
Pour valider le mode WAL de compatibilité, exécutez la commande suivante : Tests CTS du module CtsDatabaseTestCases. Les tests CTS vérifieront le comportement attendu lorsque la WAL de compatibilité est activée.