SQLite
 sql >> Base de données >  >> RDS >> SQLite

Le comportement d'Android SQLite Journal a-t-il changé ?

@CL a raison, le mode journal semble changer en fonction du niveau de l'API (peut-être change-t-il aussi selon le fabricant ?).

Cependant, pour référence future, j'ai interrogé la base de données pour le journal_mode à plusieurs niveaux d'API et les résultats sont :

  • Android 2.3.7 (API 10) =supprimer
  • Android 4.0.4 (API 15) = tronquer
  • Android 4.1.1 (API 16) =persister
  • Android 4.3.0 (API 18) =persister
  • Android 4.4.4 (API 19) =persister
  • Android 5.0.0 (API 21) =persister
  • Android 5.1.0 (API 22) =persister

Code pour obtenir le mode journal :

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

À propos des modes de journal :

Le mode de journalisation DELETE est le comportement normal. En mode DELETE, le journal de rollback est supprimé à la fin de chaque transaction. En effet, l'opération de suppression est l'action qui provoque la validation de la transaction.

Le mode de journalisation TRUNCATE valide les transactions en tronquant le journal de restauration à une longueur nulle au lieu de le supprimer. Sur de nombreux systèmes, tronquer un fichier est beaucoup plus rapide que supprimer le fichier car le répertoire contenant n'a pas besoin d'être modifié.

Le mode de journalisation PERSIST empêche la suppression du journal de rollback à la fin de chaque transaction. Au lieu de cela, l'en-tête du journal est remplacé par des zéros. Cela empêchera d'autres connexions à la base de données d'annuler le journal. Le mode de journalisation PERSIST est utile comme optimisation sur les plates-formes où la suppression ou la troncation d'un fichier est beaucoup plus coûteuse que l'écrasement du premier bloc d'un fichier avec des zéros.

Plus d'infos