2010-12-13 18 views
5

La ejecución de varias instrucciones SQL sin ponerlas en una transacción es un cuello de botella grave (consulte, por ejemplo, http://www.sqlite.org/faq.html#q19). No he revisado minuciosamente cómo se configura SQLite en Android, pero de forma anecdótica percibí un aumento dramático en el rendimiento dentro de mi aplicación cuando usaba transacciones en más lugares.Detectando transacciones olvidadas de SQLite en Android usando StrictMode?

¿Es posible detectar instancias en las que uno olvida usar transacciones usando StrictMode? Si no, ¿podría considerarse eso para una versión futura de StrictMode? Puede ser algo difícil de detectar, pero dos estrategias diferentes podrían ser, 1) declaraciones no seleccionadas fuera de la transacción, o 2) declaraciones múltiples no seleccionadas fuera de la transacción ejecutada dentro de un período corto de tiempo.

Respuesta

3

Sí, eso suena como algo bueno de atrapar. Me podía imaginar una API como:

StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);

Hemos estado considerando otros ganchos SQLite en StrictMode (sobre todo alrededor selecciona índices que faltan y tal), pero esto es una buena idea también!

+1

¡Salud! ¡Los índices faltantes también serían increíbles! – jonasb

+0

Esperando que Gingerbread llegue a mi Nexus ... twiddle thumbs :) – hunterp

+0

¡Oye, la fuente de Gingerbread ya salió! Un paso a la vez. :) –

Cuestiones relacionadas