Android SQLite Database 写入速度慢的一个解决方案
来源:互联网 发布:c语言取绝对值 编辑:程序博客网 时间:2024/06/16 10:47
在写之前的阅读器时,就发现数据库写入的速度有些不如人意,一千条左右数据,需要十秒以上的时间才能完成写入,当时未深究原因,只当是disk写入速度缓慢导致的,大概代码如下:
public void insert(final List<Book> books, final InsertCallback callback){ new Thread(new Runnable() { @Override public void run() { for(int i=0;i<books.size();i++){ insert(books.get(i)); if(i % 100 == 0){ callback.onInsert(i); } } callback.inserted(); } }).start(); }
每一百次的插入回调之间的间隔超过了一秒。
近来在学习一些Android trick的过程中发现stack overflow上也有人提到类似的问题,看了下高赞答案并尝试后,果然很大程度上得到了解决。
先说原因:
SQLiteDatabase的每个命令(statement)都会被封装成一个Transaction,并获得锁,重复调用insert事实上执行了多个Transaction。
现在我们为重复执行的代码段手动设置TransAction:
public void insert(final List<Book> books, final InsertCallback callback){ new Thread(new Runnable() { @Override public void run() { //begin transaction db.beginTransaction(); for(int i=0;i<books.size();i++){ insert(books.get(i)); if(i % 100 == 0){ callback.onInsert(i); } } //end transaction db.endTransaction(); callback.inserted(); } }).start(); }
随后的测试中,插入一万条大概需要两秒左右,效率提高约50倍。
stack overflow 原问题链接:
http://stackoverflow.com/questions/28188164/android-sqlite-performance
0 0
- Android SQLite Database 写入速度慢的一个解决方案
- android sqlite批量插入数据速度慢解决方案
- mingw在线安装速度慢的一个解决方案
- android sqlite批量插入数据速度解决方案
- android sqlite批量插入数据速度解决方案
- android sqlite批量插入数据速度解决方案
- android sqlite批量插入数据速度解决方案
- myeclipse 运行速度慢的解决方案
- adsl 上传速度慢 的解决方案
- mysql远程连接速度慢的解决方案
- mysql 远程连接速度慢的解决方案
- 使用npm 安装速度慢的解决方案
- 数据库操作时,速度慢的解决方案
- mysql 远程连接速度慢的解决方案
- mysql 远程连接速度慢的解决方案
- pod install速度慢的终极解决方案
- Dedecms生成速度慢的解决方案
- github clone速度慢的解决方案
- C语言变参函数
- postgresql常用的系统表
- 数字电视之TS流解析
- Openlayers之地图标注
- SQL Server 2016 新功能之综述
- Android SQLite Database 写入速度慢的一个解决方案
- Python学习第三篇:pca算法
- 【Codeforces 711 C】+ dp
- 前言
- hbuilder学习1
- 开发书籍推荐路线
- SpringBoot 整合Ehcache3
- nginx的nginx-rtmp-module应用
- maven快速入门新建项目, 卡慢问题解决