在Titanium中通过使用BEGINCOMMIT来加速SQLite插入 *** 作

在Titanium中通过使用BEGINCOMMIT来加速SQLite插入 *** 作,第1张

概述对于Titanium的性能一直是大家关心的一个问题,今天给大家分享一个提高往数据库中插入数据性能的方法:使用BEGIN/COMMIT。 一般我们在往数据库中插入数据的时候,通常的做法是: 1、打开DB var db = Ti.Database.open(); 2、执行插入语句 db.execute(); 3、关闭数据库 db.close(); 为大家介绍的技巧是:   在执行插入语句之前先执行db 对于Titanium的性能一直是大家关心的一个问题,今天给大家分享一个提高往数据库中插入数据性能的方法:使用BEGIN/COMMIT。

一般我们在往数据库中插入数据的时候,通常的做法是:
1、打开DB var db = Ti.Database.open();
2、执行插入语句 db.execute();
3、关闭数据库 db.close();

为大家介绍的技巧是:
在执行插入语句之前先执行db.execute('BEGIN;');
在执行插入语句之后执行db.execute('COMMIT;');

这样一来就能大幅提高数据库的插入性能。

我们拿AndroID版的应用来测试一下到底是否能提高性能,这里我们试着往数据库中插入1000件数据,看看一般的做法和使用了该技巧之后的执行速度有什么差距。

   Ti.include("tracer.Js");   // BEFORE   var dbLog = tracer.createTracer('db');   dbLog.info('opening database');   var db = Ti.Database.open("TEST");   //db.execute("CREATE table ITEM(ID integer,VALUE varchar(20))");      dbLog.info('deleting old items');   db.execute('DELETE FROM ITEM');   dbLog.info(db.rowsAffected + ' rows deleted');      dbLog.info('starting insert');   for( var i = 0; i < 1000; i++ ){      db.execute('INSERT INTO ITEM (ID,VALUE) VALUES(?,?)',i,'VALUE'+i);   }   dbLog.info( 'finished inserts' );   dbLog.info( 'closing database' );   db.close();   dbLog.info('database save complete');	   // AFTER   var dbLog2 = tracer.createTracer('db2');   dbLog2.info('opening database');   var db2 = Ti.Database.open("TEST");   dbLog2.info('deleting old items');   db2.execute('DELETE FROM ITEM');   dbLog2.info(db2.rowsAffected + ' rows deleted');   dbLog2.info('starting BEGIN');   db2.execute('BEGIN;');   dbLog2.info('starting insert');   for( var i = 0; i < 1000; i++ ){      db2.execute('INSERT INTO ITEM (ID,'VALUE'+i);   }   dbLog2.info( 'finished inserts' );   dbLog2.info( 'starting commit' );   db2.execute('COMMIT;');   dbLog2.info( 'finished commit' );   dbLog2.info( 'closing database' );   db2.close();   dbLog2.info('database save complete');


执行结果如下:


可以明显的看出所花费的时间从 7670ms 变为了 1609ms,大概提高了7倍的速度。

很多人马上会问到为什么加了之后性能就提高了呢?其实大家查看 TiDatabaseProxy.java的源码你会发现,Titanium也只是将sql的执行交给了AndroID来执行。所以归根结底还是AndroID系统的androID.database.sqlite.sqliteDatabase这个类的作用。

其中的tracer是一个输入LOG的库,示例代码也上传给大家 code.rar! 总结

以上是内存溢出为你收集整理的在Titanium中通过使用BEGIN/COMMIT来加速SQLite插入 *** 作全部内容,希望文章能够帮你解决在Titanium中通过使用BEGIN/COMMIT来加速SQLite插入 *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/sjk/1175976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存