`

android上SQLite性能优化的问题

阅读更多
   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(); //设置事务处理成功,不设置会自动回滚不提交。

//setTransactionSuccessfulendTransaction之间不进行任何数据库操作 

           }catch(Exception e){

               MyLog.printStackTraceString(e);

           }finally{

               db.endTransaction(); //处理完成

           }

 

    这样SQLite将把全部要执行的SQL语句先缓存在内存当中,然后等到COMMIT的时候一次性的写入数据库,这样数据库文件只被打开关闭了一次,效率自然大大的提高

 

 

分享到:
评论

相关推荐

    Android开发环境中的SQLite性能优化.pdf

    "Android开发环境中的SQLite性能优化" 在 Android 开发环境中,SQLite 是一个非常流行的嵌入式数据库管理系统。为了提高 SQLite 的性能和资源占用,我们可以通过两种方法进行优化:使用事务和使用索引。 首先,让...

    Android性能优化.pdf

    【Android性能优化】是Android开发中的重要环节,涵盖了多个关键领域,包括ANR问题解析、crash监控方案、启动速度与执行效率优化、内存优化、耗电优化、网络传输与数据存储优化以及APK大小优化。 **ANR问题解析**是...

    Android数据库SQLite详解

    在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。SQLite具有高效、可靠且易于集成的特点,使得它成为Android应用数据...

    Android-sqlite-android一个AndroidSQLite支持库

    6. **性能优化**:通过缓存和批处理等方式,优化了数据访问性能,减少了I/O操作,提高了应用的运行效率。 在具体使用`sqlite-android`时,开发者通常需要以下步骤: 1. **添加依赖**:将`sqlite-android`库添加到...

    Android-SQLite和SQLCipher性能测试

    本文将深入探讨Android环境下SQLite与SQLCipher的性能测试,以及它们在实际应用中的优缺点。 首先,SQLite作为Android默认的数据库,其性能主要体现在快速的本地数据存取、简单的API接口和良好的兼容性。它的优势...

    Android应用性能优化

    ### Android应用性能优化 在移动开发领域,特别是针对Android平台的应用开发过程中,性能优化是确保应用流畅运行、提升用户体验的关键环节。本篇文章将围绕“Android应用性能优化”这一主题,详细探讨Android应用...

    arcgis for android 读取加载sqlite数据库.rar

    - 性能优化:避免在主线程中进行耗时的数据库操作,可以使用AsyncTask或者其他的异步处理方式。 6. **示例代码**: 创建一个SQLiteOpenHelper子类,然后在其中创建数据库和表。使用JDBC连接数据库,执行SQL语句,...

    Android基于Sqlite的学生信息管理系统源码.zip

    九、性能优化 为了提高数据库操作性能,可以使用批量插入、预编译语句(SQLiteStatement)以及适当的数据缓存策略。同时,避免在主线程中执行耗时的数据库操作,以免影响用户体验。 综上所述,"Android基于SQLite的...

    Android SQLite源码+说明

    在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的数据库系统,允许开发者在移动设备上存储和管理数据。本资料包包含了对Android SQLite的详细文档和源码分析,帮助开发者深入理解其工作原理。 ...

    Android基于Sqlite的学生信息管理系统.zip

    系统开发过程中还需要考虑性能优化。例如,批量插入数据可以提高效率,避免频繁的数据库操作;使用游标(Cursor)遍历结果集可以减少内存消耗;合理设置数据库索引能加快查询速度。同时,为了保证数据安全,应定期...

    Android-sqlite3命令-Android开发-sqlite3_armv7

    4. **sqlite3_armv7**:这个版本是为ARMv7架构设计的,通常在性能更强的Android设备上使用,支持更多的指令集和特性。 5. **sqlite3_armv7-pie**:这个版本可能包含了位置独立代码(Position Independent Executable...

    android操作数据库Sqlite源代码

    在Android开发中,SQLite是一个...实际开发中,还需要考虑数据同步、数据备份、数据加密等高级功能,以及性能优化,如批量插入、使用索引等。学习并理解这些知识点,将有助于你更好地在Android项目中运用SQLite数据库。

    sqlite-android,android sqlite支持库.zip

    对于开源项目而言,"sqlite-android" 可能包含了一些额外的特性或优化,比如更好的性能、更完善的 API 设计、对新 SQLite 功能的支持等。开发者可以通过阅读源码和文档,了解其具体实现和使用方法,以充分利用这个库...

    android中sqlite的使用

    10. 性能优化: - 合理设计数据库结构,避免全表扫描。 - 使用合适的数据类型,如使用整数代替字符串表示ID。 - 使用索引加速查询,但注意过度使用索引会影响写操作速度。 - 使用事务处理批量操作,减少磁盘I/O...

    android安卓SQLiteManager

    SQLiteManager是一款专为Android开发者设计的SQLite数据库管理工具,它使得在移动设备上操作SQLite数据库变得更加便捷。本文将深入探讨SQLiteManager在Android环境中的应用、功能以及使用技巧。 一、SQLiteManager...

    android sqlite 简介

    SQLite 支持标准的关系型数据库特性,如SQL语法、事务处理和预编译语句等,使得开发者能够方便地在Android设备上进行数据管理。 一、SQLite内核描述 SQLite的内核是其核心组成部分,负责数据的存储、查询和管理。1...

    《Android应用性能优化》

    《Android应用性能优化》这本书是Android开发者不可或缺的参考资料,它深入浅出地讲解了如何提升Android应用程序的性能和用户体验。虽然出版时间可能较早,但其中的许多优化原则和技术仍然是当前Android开发中的核心...

    Android源码——数据库SQLite.zip

    总的来说,"Android源码——数据库SQLite.zip"的内容涵盖了SQLite在Android中的使用、数据库的创建与管理、SQL操作、事务处理、性能优化等方面的知识,对于深入理解Android应用的数据存储机制具有很高的学习价值。

    Android数据库SQLite的例子

    9. **优化性能**: 为了提高性能,可以考虑使用预编译的SQLite语句(SQLiteStatement),避免频繁创建和解析SQL字符串。 10. **数据库升级**: 当需要修改数据库结构时,需要增加数据库版本号,并在`onUpgrade()`方法...

Global site tag (gtag.js) - Google Analytics