Обнаружение забытой транзакции SQLite на Android с помощью StrictMode? - PullRequest
5 голосов
/ 14 декабря 2010

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

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

1 Ответ

3 голосов
/ 15 декабря 2010

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

StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);

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

...