Tryb Compatibility WAL jest domyślnie włączony w przypadku bazy danych aplikacji, chyba że aplikacja:
- włączyła lub wyłączyła tryb write-ahead logging, wywołując
SQLiteDatabase.enableWriteAheadLogginglubdisableWriteAheadLogging - wyraźnie zażądała trybu dziennika, wywołując
SQLiteDatabase.OpenParams.setJournalMode(String mode)
Włączenie trybu dziennika WAL może znacznie zwiększyć wydajność i zmniejszyć liczbę zapisów. Na przykład w systemie plików ext4 tryb WAL może 4-krotnie zwiększyć szybkość zapisu.
Tryb Compatibility WAL jest domyślnie włączony i nie wymaga dodatkowej implementacji.
Wyłączanie trybu Compatibility WAL
Aby wyłączyć tryb Compatibility WAL, nałóż
db_compatibility_wal_supported
zasób konfiguracyjny.
Przykład:
<bool name="db_compatibility_wal_supported">false</bool>
Możesz wyłączyć tryb Compatibility WAL w konfiguracjach, w których tryb dziennika WAL nie zapewnia przewagi wydajnościowej nad tradycyjnymi trybami dziennika wycofywania. Na przykład w systemie plików F2FS, chociaż SQLite obsługuje zapisy atomowe, a wydajność dziennika DELETE jest podobna do WAL, tryb WAL może zwiększyć liczbę zapisów o 10–15%.
Weryfikacja
Aby zweryfikować tryb Compatibility WAL, uruchom testy CTS z modułu CtsDatabaseTestCases. Testy CTS sprawdzą oczekiwane działanie, gdy tryb Compatibility WAL jest włączony.