Write-Ahead-Logging für die Kompatibilität von Apps

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)

Das Aktivieren des WAL-Journal-Modus kann zu einer deutlichen Leistungssteigerung und einer Verringerung der Anzahl der Schreibvorgänge führen. 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. Beispielsweise kann WAL die Anzahl der Schreibvorgänge in einem F2FS-Dateisystem um 10 bis 15 % erhöhen, obwohl SQLite atomare Schreibvorgänge unterstützt und die Leistung des DELETE-Journals der von WAL ähnelt.

Zertifizierungsstufe

Führen Sie den folgenden Befehl aus, um den Kompatibilitäts-WAL-Modus zu validieren: CTS-Tests aus dem Modul CtsDatabaseTestCases. Mit CTS-Tests wird das erwartete Verhalten überprüft, wenn die WAL-Kompatibilität aktiviert ist.