加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite效率评测!

发布时间:2020-12-12 20:22:08 所属栏目:百科 来源:网络整理
导读:近期因为嵌入式系统上面要用到数据库方面的东西,对于数据库,我还是第一次接触,之前保存数据要不就是ini文件,要不就是xml;全新的挑战啊; 查阅资料,得知SQLite是一个非常不错的轻量级数据库,下载,就一个源文件,感觉老外水平就是牛,C语言运用炉火纯

近期因为嵌入式系统上面要用到数据库方面的东西,对于数据库,我还是第一次接触,之前保存数据要不就是ini文件,要不就是xml;全新的挑战啊;

查阅资料,得知SQLite是一个非常不错的轻量级数据库,下载,就一个源文件,感觉老外水平就是牛,C语言运用炉火纯青,赞一个!

当然得感谢网友的无私奉献,贡献了很多可以借鉴的代码以及经验,经过修改,刚开始写1000条数据消耗的时间大概是21秒,感觉速度有点慢,

觉得不对劲,继续查阅相关资料,发现有这么个说法:


没有事务的时候,SQLite的插入操作使用了太多的IO操作,而是用事务的话,只需要一次IO。(http://www.cnblogs.com/rader/articles/1543760.html)

于是果断找资料,原来sqlite,每次insert的时候都会处理一次事务,那么3W多条数据,也就3W多事务处理,就这样悲剧了.(http://www.2cto.com/database/201208/146785.html)

修改后的代码如下:

struct timeval tv,tvEnd;
int i;
sqlite3_exec( db,"BEGIN",0);
gettimeofday( &tv,NULL );
printf("Start %d %d n",tv.tv_sec,tv.tv_usec/1000);
for ( i=0; i<100000; i++ )
{
result = sqlite3_exec( db,"insert into MyTable_1( name ) values ( 'abcdefghigh' )",&errmsg );
if(result != SQLITE_OK )
{
printf( "
插入记录失败,错误码:%d,错误原因:%sn",result,errmsg ); //不好意思,网上拷贝人家的代码,中文;
}
}

sqlite3_exec( db,"COMMIT",0);

效率如下:

Use 0 sec 739 ms

10万条记录才花7.4ms,效率确实很高啊!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读