Kompatibilitäts-Write-Ahead-Logging für Anwendungen

Mit Android 9 wird ein spezieller Modus SQLite-Datenbank Kompatibilitäts-Write-Ahead-Logging (WAL), mit dem eine Datenbank journal_mode=WAL, wobei maximal ein Wert beibehalten wird Verbindung pro Datenbank.

Kompatibilitäts-WAL ist standardmäßig für die Datenbank einer App aktiviert, es sei denn, das App entweder:

  1. Write-Ahead-Logging durch folgenden Aufruf aktivieren oder deaktivieren SQLiteDatabase.enableWriteAheadLogging oder disableWriteAheadLogging
  2. Ausdrücklich angeforderter Journalmodus durch Aufruf von SQLiteDatabase.OpenParams.setJournalMode(String mode)

Die Aktivierung des WAL-Journalmodus kann zu einer erheblichen Verbesserung und die Anzahl der Schreibvorgänge reduzieren. Beispiel: Bei einer ext4 kann WAL zu einer 4-fachen Verbesserung der Schreibgeschwindigkeit führen.

Kompatibilitäts-WAL ist standardmäßig aktiviert und erfordert keine zusätzliche Implementierung.

Kompatibilitäts-WAL deaktivieren

Um den Kompatibilitäts-WAL-Modus zu deaktivieren, blenden Sie das db_compatibility_wal_supported config-Ressource an.

Beispiel:

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

Sie können Kompatibilitäts-WAL für Konfigurationen deaktivieren, in denen die WAL Der Journalmodus bietet keinen Leistungsvorteil gegenüber einem herkömmlichen Rollback. Journalmodi. Beispiel: Bei einem F2FS-Dateisystem, obwohl SQLite atomare Schreibvorgänge und die Leistung des DELETE-Journals ähnlich wie WAL ist, kann WAL die Anzahl der Schreibvorgänge um 10 bis 15 % erhöhen.

Zertifizierungsstufe

Führen Sie den folgenden Befehl aus, um den Kompatibilitäts-WAL-Modus zu validieren: CTS-Tests aus dem Modul CtsDatabaseTestCases. CTS-Tests überprüfen die bei aktiviertem Kompatibilitäts-WAL.