Question

Exécuter plusieurs instructions SQL sans les mettre dans une transaction est un goulot d'étranglement sévère (voir par exemple http: / /www.sqlite.org/faq.html#q19 ). Je ne l'ai pas soigneusement vérifié comment SQLite est configuré sur Android, mais je anecdotiquement perçu dramaturgique augmentation des performances dans mon application sur les transactions lors de l'utilisation dans plus d'endroits.

Est-il possible de détecter les cas où l'on oublie à des transactions d'utilisation à l'aide StrictMode? Dans le cas contraire, pourrait-il être pris en considération pour une version future de StrictMode? Il est peut-être un peu difficile à détecter, mais deux stratégies différentes pourrait être, 1) déclarations non sélectionnez transaction en dehors, ou 2) plusieurs déclarations non sélectionnez transaction en dehors exécutée dans un court laps de temps.

Était-ce utile?

La solution

Ouais, ça sonne comme une bonne chose à attraper. Je ne pouvais imaginer une API comme:

StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);

Nous avons d'envisager d'autres crochets SQLite dans StrictMode (la plupart du temps autour des indices manquants et sélectionne tel), mais cela est une bonne idée aussi!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top