当前位置: 首页 > news >正文

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对象。

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

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


http://www.mrgr.cn/news/15802.html

相关文章:

  • 集成电路学习:什么是CRC循环冗余校验
  • cucumber 怎么启动API
  • 对mozjpeg中的函数名进行替换
  • 用矩阵乘法的底层原理来理解“特征融合”
  • Android强制设置所有应用显示方向,忽略应用本身的设置
  • 【面试题系列Vue06】Vue 单页应用与多页应用的区别
  • 损失函数、成本函数cost 、最大似然估计
  • 五,Spring Boot中的 Spring initializr 的使用
  • Runway删库跑路,真的run away了!
  • net6 core 接入nacos 实现服务注册入门使用,心跳检测和负载均衡
  • 从零开始:全面掌握C++ Qt开发框架基础
  • C#——扩展方法
  • 【2024 CCF编程能力等级认证(GESP)C++ 】一级大纲
  • pytorch view 函数介绍
  • 【大模型项目实战】练完这些项目,天下没有再难倒你的大模型
  • 集成电路学习:什么是DAC数模转换器
  • 从开题到答辩:ChatGPT超全提示词分享!(下)【建议收藏】
  • 【C++】智能指针
  • leetcode刷题-二叉树07
  • 咬破那片叶,看天