使用 StrictMode 检测 Android 上被遗忘的 SQLite 事务?

发布于 2024-10-07 18:19:12 字数 377 浏览 1 评论 0原文

执行多个 SQL 语句而不将它们放入一个事务中是一个严重的瓶颈(参见例如 http://www.sqlite.org/faq.html#q19")。 sqlite.org/faq.html#q19)。我还没有彻底检查 SQLite 在 Android 上的配置方式,但有趣的是,当我在更多地方使用事务时,我发现我的应用程序的性能显着提高。

是否可以使用 StrictMode 检测忘记使用事务的情况?如果没有,是否可以考虑将其用于 StrictMode 的未来版本?检测起来可能有些棘手,但可能有两种不同的策略:1) 事务外部的非选择语句,或 2) 在短时间内执行的事务外部的多个非选择语句。

Executing multiple SQL statements without putting them into one transaction is a severe bottleneck (see e.g. http://www.sqlite.org/faq.html#q19). I haven't thoroughly checked how SQLite is configured on Android, but anecdotally I perceived dramatical performance increase within my on app when using transactions in more places.

Is it possible to detect instances where one forgets to use transactions using StrictMode? If not, could that be considered for a future release of StrictMode? It might be somewhat tricky to detect, but two different strategies could be, 1) non-select statements outside transaction, or 2) multiple non-select statements outside transaction executed within a short period of time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

王权女流氓 2024-10-14 18:19:12

是的,这听起来是一件好事。我可以想象这样的 API:

StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);

我们一直在考虑将其他 SQLite 挂钩纳入 StrictMode(主要是选择缺失的索引等),但这也是一个好主意!

Yeah, that sounds like a good thing to catch. I could imagine an API like:

StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);

We've been considering other SQLite hooks into StrictMode (mostly around selects missing indexes and such), but this is a good idea too!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文