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:
- Write-Ahead-Logging durch folgenden Aufruf aktivieren oder deaktivieren
SQLiteDatabase.enableWriteAheadLogging
oderdisableWriteAheadLogging
- 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.