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

StackOverflow https://stackoverflow.com/questions/4433629

Вопрос

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

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

Это было полезно?

Решение

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

StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top