Journalisation préalable de compatibilité pour les applications

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:

  1. Activer ou désactiver la journalisation WAL (Write-Ahead Logging) en appelant SQLiteDatabase.enableWriteAheadLogging ou disableWriteAheadLogging
  2. 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é.