执行多个SQL语句而不将它们放入一个事务中是一个严重的瓶颈(参见例如http://www.sqlite.org/faq.html#q19)。我还没有彻底检查过如何在Android上配置SQLite,但有趣的是,当我在更多地方使用交易时,我觉得我的应用程序内的性能会有显着提升。
是否有可能检测到使用StrictMode忘记使用事务的实例?如果没有,是否可以考虑将来的StrictMode版本?检测可能有些棘手,但两种不同的策略可能是:1)事务外的非选择语句,或者2)在短时间内执行的事务外的多个非选择语句。
答案 0 :(得分:3)
是的,这听起来像是一件好事。我可以想象一个像这样的API:
StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);
我们一直在考虑将其他SQLite挂钩插入StrictMode(主要是围绕选择丢失的索引等),但这也是一个好主意!