Обнаружение забытой транзакции SQLite на Android с помощью StrictMode?

Выполнение нескольких операторов SQL без помещения их в одну транзакцию является серьезным узким местом (см., Например, http://www.sqlite.org/faq.html#q19). Я не проверял полностью, как настроен SQLite на Android, но, как ни странно, я заметил резкое повышение производительности в моем приложении при использовании транзакций в большем количестве мест.

Можно ли обнаружить случаи, когда кто-то забывает использовать транзакции с помощью StrictMode? Если нет, можно ли это рассмотреть для будущего выпуска StrictMode? Это может быть несколько сложно обнаружить, но могут быть две разные стратегии: 1) операторы без выбора вне транзакции или 2) несколько операторов без выбора вне транзакции, выполняемых в течение короткого периода времени.


person jonasb    schedule 13.12.2010    source источник


Ответы (1)


Да, это звучит неплохо. Я мог представить себе API вроде:

StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);

Мы рассматривали другие хуки SQLite в StrictMode (в основном для выбора отсутствующих индексов и т. Д.), Но это тоже хорошая идея!

person Brad Fitzpatrick    schedule 14.12.2010
comment
Ваше здоровье! Также было бы замечательно отсутствие индексов! - person jonasb; 15.12.2010
comment
Эй, источник пряников вышел! Шаг за шагом. :) - person Brad Fitzpatrick; 18.12.2010