W Androidzie 9 wprowadzamy specjalny tryb
Baza danych SQLite
zgodnego z zasadami rejestrowania z wyprzedzeniem (WAL). Pozwala ono
journal_mode=WAL
z zachowaniem maksymalnie jednego
na bazę danych.
Zgodność WAL z bazą danych aplikacji jest domyślnie włączona, chyba że ma jeden z elementów:
- Włączenie lub wyłączenie logowania z wyprzedzeniem przez wywołanie
SQLiteDatabase.enableWriteAheadLogging
lubdisableWriteAheadLogging
- Wyraźnie zażądano trybu dziennika przez wywołanie
SQLiteDatabase.OpenParams.setJournalMode(String mode)
Włączenie trybu dziennika WAL może znacznie poprawić wydajność i zmniejszenie liczby zapisów. Na przykład w systemie ext4 i 4-krotnie zwiększa szybkość zapisu.
Zgodność WAL jest domyślnie włączona i nie wymaga żadnych dodatkowych implementacji.
Wyłącz Zgodność WAL
Aby wyłączyć tryb zgodności WAL, nałóż nakładkę
db_compatibility_wal_supported
config.
Na przykład:
<bool name="db_compatibility_wal_supported">false</bool>
Warto wyłączyć zapisywanie WAL zgodności w przypadku konfiguracji, w których tryb dziennika nie zapewnia większej wydajności w porównaniu z tradycyjnym cofnięciem zmian. trybami dziennika. Na przykład w systemie plików F2FS, chociaż SQLite obsługuje niepodzielne zapisy, a wydajność dziennika DELETE jest podobna do WAL, zwiększ liczbę zapisów o 10% do 15%.
Weryfikacja
Aby sprawdzić tryb zgodności WAL, uruchom Testy CTS w module CtsDatabaseTestCases. Testy CTS pozwolą sprawdzić oczekiwaną w sytuacji, gdy włączona jest zgodność WAL.