2010-12-13 5 views
5

L'exécution de 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 n'ai pas complètement vérifié comment SQLite est configuré sur Android, mais anecdotique j'ai perçu l'augmentation dramatique de représentation dans mon application sur en utilisant des transactions dans plus d'endroits.Détection d'une transaction SQLite oubliée sur Android en utilisant StrictMode?

Est-il possible de détecter des cas où l'on oublie d'utiliser des transactions en utilisant StrictMode? Si non, cela pourrait-il être envisagé pour une future version de StrictMode? Il peut être difficile à détecter, mais deux stratégies différentes peuvent être: 1) les déclarations non sélectives en dehors de la transaction, ou 2) les déclarations non sélectives multiples en dehors de la transaction exécutées dans un court laps de temps.

Répondre

3

Oui, cela semble être 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 sélectionne les index manquants et autres), mais cela est une bonne idée aussi!

+1

À la votre! Les index manquants seraient aussi géniaux! – jonasb

+0

En attente de pain d'épice pour frapper mon Nexus ... twiddle thumbs :) – hunterp

+0

Hey, la source de pain d'épice est sorti maintenant! Un pas après l'autre. :) –