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.
La fonctionnalité WAL de compatibilité est activée par défaut pour la base de données d'une application, sauf si l'une des applications suivantes:
- 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 permettre d'améliorer de manière significative et la réduction du nombre 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 les fichiers 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 WAL de compatibilité pour les configurations où le fichier 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 lorsque le journal de bord de compatibilité est activé.