1.利用android提高的的insert,query,update,deleteAPI与execSql,rawQuery函数执行原生的插入,查询,更新,删除语句操作花费时间的对比结果
在相同的环境(adnroid4.0)和相同的机器下执行相同的动作,记录条数也一样的情况下的对比,多次验证的如下:
(1)如果批量执行的记录数在1000条,则Android SqliteDatabase提供的insert,query,update,delete函数和直接写SQL文的execSql,rawQuery的效率差不多,几乎一样。所以使用哪种方式都可以,不会影响到执行效率。
(2)如果批量执行的记录数在10万条,则会存在差别。在某台手机上SqliteDatabase提供的insert执行插入操作耗时45秒,要比execSql插入35秒慢10秒左右。
可见在数据库大的情况下,还是有差别的。execSql省去了拼接sql语句的步骤,要比SqliteDatabase提供的insert,query,update,delete等函数效率高。当数据库越大,差别也越大。
2.Sqlite数据库批量操作效率的问题
应用程序初始化时需要批量的向sqlite中插入大量数据,单独的使用for+Insert方法导致应用响应缓慢, 因为 SQLite的数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很耗时的过程,会极大地影响数据库存取的速度。sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作。初始5000条记录也就是要5000次读写磁盘操作, 将会重复的打开关闭数据库文件5000次,所以速度当然会很慢。而且不能保证所有数据都能同时插入。
解决方法:
添加事务处理,把5000条插入作为一个事务
我们使用SQLite的事务进行控制:
db.beginTransaction(); //手动设置开始事务
try{
//批量处理操作
for(Collection c:colls){
insert(db, c);
}
db.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交。
//在setTransactionSuccessful和endTransaction之间不进行任何数据库操作
}catch(Exception e){
MyLog.printStackTraceString(e);
}finally{
db.endTransaction(); //处理完成
}
这样SQLite将把全部要执行的SQL语句先缓存在内存当中,然后等到COMMIT的时候一次性的写入数据库,这样数据库文件只被打开关闭了一次,效率自然大大的提高
相关推荐
"Android开发环境中的SQLite性能优化" 在 Android 开发环境中,SQLite 是一个非常流行的嵌入式数据库管理系统。为了提高 SQLite 的性能和资源占用,我们可以通过两种方法进行优化:使用事务和使用索引。 首先,让...
【Android性能优化】是Android开发中的重要环节,涵盖了多个关键领域,包括ANR问题解析、crash监控方案、启动速度与执行效率优化、内存优化、耗电优化、网络传输与数据存储优化以及APK大小优化。 **ANR问题解析**是...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。SQLite具有高效、可靠且易于集成的特点,使得它成为Android应用数据...
系统开发过程中还需要考虑性能优化。例如,批量插入数据可以提高效率,避免频繁的数据库操作;使用游标(Cursor)遍历结果集可以减少内存消耗;合理设置数据库索引能加快查询速度。同时,为了保证数据安全,应定期...
6. **性能优化**:通过缓存和批处理等方式,优化了数据访问性能,减少了I/O操作,提高了应用的运行效率。 在具体使用`sqlite-android`时,开发者通常需要以下步骤: 1. **添加依赖**:将`sqlite-android`库添加到...
### Android应用性能优化 在移动开发领域,特别是针对Android平台的应用开发过程中,性能优化是确保应用流畅运行、提升用户体验的关键环节。本篇文章将围绕“Android应用性能优化”这一主题,详细探讨Android应用...
- 性能优化:避免在主线程中进行耗时的数据库操作,可以使用AsyncTask或者其他的异步处理方式。 6. **示例代码**: 创建一个SQLiteOpenHelper子类,然后在其中创建数据库和表。使用JDBC连接数据库,执行SQL语句,...
九、性能优化 为了提高数据库操作性能,可以使用批量插入、预编译语句(SQLiteStatement)以及适当的数据缓存策略。同时,避免在主线程中执行耗时的数据库操作,以免影响用户体验。 综上所述,"Android基于SQLite的...
本文将深入探讨Android环境下SQLite与SQLCipher的性能测试,以及它们在实际应用中的优缺点。 首先,SQLite作为Android默认的数据库,其性能主要体现在快速的本地数据存取、简单的API接口和良好的兼容性。它的优势...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的数据库系统,允许开发者在移动设备上存储和管理数据。本资料包包含了对Android SQLite的详细文档和源码分析,帮助开发者深入理解其工作原理。 ...
4. **sqlite3_armv7**:这个版本是为ARMv7架构设计的,通常在性能更强的Android设备上使用,支持更多的指令集和特性。 5. **sqlite3_armv7-pie**:这个版本可能包含了位置独立代码(Position Independent Executable...
在Android开发中,SQLite是一个...实际开发中,还需要考虑数据同步、数据备份、数据加密等高级功能,以及性能优化,如批量插入、使用索引等。学习并理解这些知识点,将有助于你更好地在Android项目中运用SQLite数据库。
对于开源项目而言,"sqlite-android" 可能包含了一些额外的特性或优化,比如更好的性能、更完善的 API 设计、对新 SQLite 功能的支持等。开发者可以通过阅读源码和文档,了解其具体实现和使用方法,以充分利用这个库...
10. 性能优化: - 合理设计数据库结构,避免全表扫描。 - 使用合适的数据类型,如使用整数代替字符串表示ID。 - 使用索引加速查询,但注意过度使用索引会影响写操作速度。 - 使用事务处理批量操作,减少磁盘I/O...
SQLiteManager是一款专为Android开发者设计的SQLite数据库管理工具,它使得在移动设备上操作SQLite数据库变得更加便捷。本文将深入探讨SQLiteManager在Android环境中的应用、功能以及使用技巧。 一、SQLiteManager...
在Android开发领域,性能优化是提升用户体验和应用质量的关键环节。这个"免费:Android性能优化视频百度云下载链接.rar"的压缩包文件提供了一个学习资源,可能是由一系列视频教程组成,帮助开发者深入理解和掌握...
SQLite 支持标准的关系型数据库特性,如SQL语法、事务处理和预编译语句等,使得开发者能够方便地在Android设备上进行数据管理。 一、SQLite内核描述 SQLite的内核是其核心组成部分,负责数据的存储、查询和管理。1...
《Android应用性能优化》这本书是Android开发者不可或缺的参考资料,它深入浅出地讲解了如何提升Android应用程序的性能和用户体验。虽然出版时间可能较早,但其中的许多优化原则和技术仍然是当前Android开发中的核心...
总的来说,"Android源码——数据库SQLite.zip"的内容涵盖了SQLite在Android中的使用、数据库的创建与管理、SQL操作、事务处理、性能优化等方面的知识,对于深入理解Android应用的数据存储机制具有很高的学习价值。