sqlite数据插入效率

一、程序效率测试

时间相关接口:
        int gettimeofday(struct timeval*tv, struct timezone *tz);
功能:得到从1970年1月1日0时0分0秒到现在的秒数。<可以利用该函数来计算一个程序的运行时间,只需在程序前后调用该函数,并用后来的函数时间减去开始的函数时间就可以。注意单位的转变。>        精度到微秒
参数:tv:获取到的秒数
结构体:   struct timeval {
               time_t      tv_sec;     /* seconds */          秒
               suseconds_t tv_usec;    /* microseconds */     微妙    1s=1000000us
           };

        tz:关于时区
 结构体:  struct timezone {
               int tz_minuteswest;     /* minutes west of Greenwich */  格林威治向西的分钟数
               int tz_dsttime;         /* type of DST correction */      夏令时修正的类型
           };
返回值:成功:0;     失败:-1

二、提高sqlite数据插入效率

1、开启事务机制

所谓”事务“就是指一组SQL命令,这些命令要么一起执行,要么都不被执行。

在SQLite中,每调用一次sqlite3_exec()函数,就会隐式地开启了一个事务,如果插入一条数据,就调用该函数一次,事务就会被反复地开启、关闭,会增大IO量。

如果在插入数据前显式开启事务,插入后再一起提交,则会大大提高IO效率,进而加数据快插入速度。

开启事务:BEGIN;/BEGIN TRANSACTION;

将事务的修改保存到数据库中:COMMIT;    /END TRANSACTION;

2、关闭写同步(危险)

synchronous Pragma 获取或设置当前磁盘的同步模式,该模式控制积极的 SQLite 如何将数据写入物理存储。
在SQLite中,数据库配置的参数都由编译指示(pragma)来实现的,而其中synchronous选项有三种可选状态:full、normal、off。
full写入速度最慢,但保证数据是安全的,不受断电、系统崩溃等影响;
而off可以加速数据库的一些操作,但如果系统崩溃或断电,则数据库可能会损毁

PRAGMA synchronous = OFF;

3、执行准备

事先将SQL语句编译好,然后再一步一步(或一行一行)地执行。执行时提高速度。

1)sqlite3_prepare_v2() 创建sqlite3_stmt语句对象;
2)sqlite3_bind_*() 绑定参数值到sqlite3_stmt;
3)sqlite3_step() 运行sql语句,可以是一次,也可以是循环执行
4)sqlite3_reset() 重置sqlite3_stmt对象;
5)sqlite3_finalize() 销毁sqlite3_stmt对象。

例如:将文件插入到数据库中。

注:开启事务机制前后效率比较:(单位:秒)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值