SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Zmieniono zachowanie dziennika SQLite dla systemu Android?

@CL ma rację, tryb dziennika wydaje się zmieniać w zależności od poziomu API (może zmienia się również przez producenta?).

Jednak na przyszłość przeszukałem bazę danych dla trybu journal_mode na kilku poziomach API, a wyniki są następujące:

  • Android 2.3.7 (API 10) =usuń
  • Android 4.0.4 (API 15) =skróć
  • Android 4.1.1 (API 16) =utrzymuj
  • Android 4.3.0 (API 18) =utrzymuj
  • Android 4.4.4 (API 19) =utrzymuj
  • Android 5.0.0 (API 21) =utrzymuj
  • Android 5.1.0 (API 22) =utrzymuj

Kod dostępu do trybu dziennika:

Cursor c = db.rawQuery("PRAGMA journal_mode;", null);
c.moveToFirst();
String journalMode = c.getString(c.getColumnIndex("journal_mode"));

O trybach dziennika:

Tryb kronikowania DELETE jest normalnym zachowaniem. W trybie DELETE dziennik wycofania jest usuwany po zakończeniu każdej transakcji. Rzeczywiście, operacja usuwania jest akcją, która powoduje zatwierdzenie transakcji.

Tryb księgowania TRUNCATE zatwierdza transakcje przez obcinanie dziennika wycofywania do zerowej długości zamiast usuwania go. W wielu systemach obcinanie pliku jest znacznie szybsze niż usuwanie pliku, ponieważ katalog zawierający nie musi być zmieniany.

Tryb księgowania PERSIST zapobiega usunięciu dziennika wycofywania po zakończeniu każdej transakcji. Zamiast tego nagłówek dziennika jest zastępowany zerami. Zapobiegnie to wycofywaniu dziennika przez inne połączenia z bazą danych. Tryb księgowania PERSIST jest przydatny jako optymalizacja na platformach, na których usuwanie lub obcinanie pliku jest znacznie droższe niż nadpisywanie zerami pierwszego bloku pliku.

Więcej informacji



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć wiersze zawierające znaki alfanumeryczne w SQLite

  2. Radzenie sobie z konfliktami kluczy podstawowych podczas wstawiania danych do SQLite

  3. java.lang.IllegalStateException:Nie można odczytać wiersza 0, col -1 z CursorWindow — problem z sqlite dla Androida

  4. Wyzwalacz SQLite

  5. Zwróć pierwszy poniedziałek każdego miesiąca w SQLite