举例:向数据库中插入100万条数据,在暗中同意的意况下假设单独是实施

sqlite3_exec(db, “insert into name values ‘lxkxf’, ‘24′; ”, 0, 0,
&zErrMsg);

将会再一次的开发关闭数据库文件100万次,所以速度自然会极慢。因而对此这种场馆大家相应运用“事务”。

具体方法如下:在实践SQL语句在此之前和SQL语句实施完结之后加上

rc = sqlite3_exec(db, “BEGIN;”, 0, 0, &zErrMsg);

//执行SQL语句

rc = sqlite3_exec(db, “COMMIT;”, 0, 0, &zErrMsg);

这么SQLite将把全副要实践的SQL语句先缓存在内部存款和储蓄器在那之中,然后等到COMMIT的时候二遍性的写入数据库,这样数据库文件只被打开关闭了叁次,作用自然大大的升高。有大器晚成组数据比较:

测试1: 1000 INSERTs

CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t1 VALUES(1,13153,’thirteen thousand one hundred fifty
three’);
INSERT INTO t1 VALUES(2,75560,’seventy five thousand five hundred
sixty’);
… 995 lines omitted
INSERT INTO t1 VALUES(998,66289,’sixty six thousand two hundred eighty
nine’);
使用事务 凯旋门074网址25000 INSERTs。INSERT INTO t1 VALUES(999,24322,’twenty four thousand three hundred
twenty two’);
INSERT INTO t1 VALUES(1000,94142,’ninety four thousand one hundred forty
two’);

SQLite 2.7.6:
13.061

使用事务 凯旋门074网址25000 INSERTs。使用事务 凯旋门074网址25000 INSERTs。SQLite 2.7.6 (nosync):
使用事务 凯旋门074网址25000 INSERTs。0.223

测验2: 使用事务 25000 INSERTs

BEGIN;
CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t2 VALUES(1,59672,’fifty nine thousand six hundred seventy
two’);
… 24997 lines omitted
INSERT INTO t2 VALUES(24999,89569,’eighty nine thousand five hundred
sixty nine’);
INSERT INTO t2 VALUES(25000,94666,’ninety four thousand six hundred
sixty six’);
COMMIT;

SQLite 2.7.6:
0.914

SQLite 2.7.6 (nosync):
0.757

看得出使用了作业之后却是比极大的拉长了数据库的功用。不过大家也要留意,使用职业也许有早晚的成本的,所以对于数据量不大的操作能够不必采用,避防产生而外的消耗。

你大概感兴趣的稿子:

  • Android开垦之SQLite的使用情势
  • SQLite 国语指南之FAQ
  • SQLite中的B-Tree达成细节拆解深入分析
  • sqlite中文乱码难题原因解析及缓慢解决
  • SQLite3中的日期时间函数使用小结
  • sqlite3
    top的询问及limit语法介绍
  • Sqlite 常用函数 推荐
  • SQLite 错误码收拾
  • sQlite常用语句以致sQlite
    developer的利用与登记

相关文章