In Android 9 wird ein spezieller Modus von SQLiteDatabase eingeführt, der als Compatibility Write-Ahead Logging (WAL) bezeichnet wird. Damit kann eine Datenbank journal_mode=WAL
verwenden, während weiterhin maximal eine Verbindung pro Datenbank beibehalten wird.
Kompatibilitäts-WAL ist standardmäßig für die Datenbank einer Anwendung aktiviert, es sei denn, die Anwendung hat:
- Sie haben das Write-Ahead-Logging aktiviert oder deaktiviert, indem Sie
SQLiteDatabase.enableWriteAheadLogging
oderdisableWriteAheadLogging
aufgerufen haben. - Durch expliziten Aufruf von
SQLiteDatabase.OpenParams.setJournalMode(String mode)
wurde der Journalmodus angefordert.
Das Aktivieren des WAL-Journal-Modus kann zu einer deutlichen Leistungssteigerung und einer Verringerung der Anzahl der Schreibvorgänge führen. Bei einem ext4-Dateisystem kann WAL beispielsweise zu einer 4-fachen Verbesserung der Schreibgeschwindigkeit führen.
Die WAL für die Kompatibilität ist standardmäßig aktiviert und erfordert keine zusätzliche Implementierung.
Kompatibilitäts-WAL deaktivieren
Wenn Sie den WAL-Kompatibilitätsmodus deaktivieren möchten, überlagern Sie die Konfigurationsressource db_compatibility_wal_supported
.
Beispiel:
<bool name="db_compatibility_wal_supported">false</bool>
Sie können den WAL-Kompatibilitätsmodus für Konfigurationen deaktivieren, in denen der WAL-Journalmodus keinen Leistungsvorteil gegenüber herkömmlichen Rollback-Journalmodi bietet. 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 zum Validieren des WAL-Modus für die Kompatibilität CTS-Tests aus dem Modul „CtsDatabaseTestCases“ aus. Mit CTS-Tests wird das erwartete Verhalten überprüft, wenn die WAL-Kompatibilität aktiviert ist.