Android 批量插入数据性能优化
最近做数据同步时遇到一个问题,在下载数据时需要批量的向 sqlite 插入数据,虽然数据不算多,但是实际测试中每插入一条数据需要将近 50ms 的时间,这意味着 100 条数据就需要花费 5s 左右的时间,对于用户来说,体验太差了,必须要优化。
在 google 了之后,发现了 sqlite 的事务处理问题,在 sqlite 插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作。明白了这个,解决方案就有了,在批量插入数据的时候,只开启一个事务,这样只会进行一次磁盘操作,代码如下:
db.beginTransaction();
try {
for (...) {
db.execSQL("...", new Object[]{});
}
db.setTransactionSuccessful();
} catch (Exception e) {
} finally {
db.endTransaction();
}
使用事务后性能有明显的提升,以批量操作 100 条为例,由原来的 5s 优化成了现在的 1s。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论