sql >> Database teknologi >  >> RDS >> SQLite

Android SQLite Journal-adfærd ændret?

@CL har ret, journaltilstanden ser ud til at ændre sig afhængigt af API-niveauet (måske ændres det også af fabrikanten?).

Men til fremtidig reference har jeg forespurgt databasen for journal_mode på flere API-niveauer, og resultaterne er:

  • Android 2.3.7 (API 10) =slet
  • Android 4.0.4 (API 15) =afkorte
  • Android 4.1.1 (API 16) =fortsætter
  • Android 4.3.0 (API 18) =fortsætter
  • Android 4.4.4 (API 19) =fortsætter
  • Android 5.0.0 (API 21) =fortsætter
  • Android 5.1.0 (API 22) =fortsætter

Kode til at få journaltilstand:

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

Om journaltilstandene:

DELETE journaling-tilstanden er den normale adfærd. I SLET-tilstand slettes tilbageføringskladden ved afslutningen af ​​hver transaktion. Faktisk er sletningsoperationen den handling, der får transaktionen til at udføre.

TRUNCATE-journaliseringstilstanden forpligter transaktioner ved at afkorte rollback-kladden til nul-længde i stedet for at slette den. På mange systemer er det meget hurtigere at afkorte en fil end at slette filen, da den indeholdende mappe ikke skal ændres.

Vedvarende journalføringstilstand forhindrer tilbageføringskladden i at blive slettet ved slutningen af ​​hver transaktion. I stedet overskrives journalens overskrift med nuller. Dette vil forhindre andre databaseforbindelser i at rulle journalen tilbage. PERSIST journaling-tilstanden er nyttig som en optimering på platforme, hvor sletning eller trunkering af en fil er meget dyrere end at overskrive den første blok af en fil med nuller.

Mere info



  1. LPAD i SQL Server 2008

  2. Eksport af data i SQL Server som INSERT INTO

  3. '0000-00-00 00:00:00' kan ikke repræsenteres som java.sql.Timestamp-fejl

  4. Kørsel af SQL Server 2014 på en Azure Virtual Machine