提升SQLite数据插入效率低、速度慢的方法
7页1、提升提升 SQLite 数据插入效率低、速度慢的方法数据插入效率低、速度慢的方法SQLite 数据库由于其简单、灵活、轻量、开源,已经被越来越多的被应用到中小型应用中。甚至有人说,SQLite 完全可以用来取代 c 语言中的文件读写操作。因此我最近编写有关遥感数据处理的程序的时候,也将 SQLite 引入进来,以提高数据的结构化程度,并且提高大数据的处理能力(SQLite 最高支持 2PB 大小的数据)。但是最开始,我发现,直接使用 SQL 语句的插入效率简直低的令人发指的。后来不断查文档、查资料,才发现了一条快速的“数据插入”之路。本文就以插入数据为例,整合网上和资料书中的各种提高 SQLite 效率的方法,给出提高 SQLite 数据插入效率的完整方法。1 1 数据数据我使用的电脑是 Win7 64 位系统,使用 VC2010 编译,SQLIte 版本为 3.7.15.2 ,电脑 CPU 为二代 i3 处理器,内存 6G。实验之前,先建立要插入数据的表:sql view plaincopy1. create table t1 (id integer , x integer , y
2、int eger, weight real) 2 2 慢速慢速最粗暴的方法最粗暴的方法SQLite 的 API 中直接执行 SQL 的函数是:cpp view plaincopy1. int sqlite3_exec( sqlite3*, const char *sql, int (*callback)(void*,int,char*,char*), v oid *, char *errmsg) 直接使用 INSERT 语句的字符串进行插入,程序部分代码(完整代码见后文),如下:cpp view plaincopy1. for(int i=0;i 2. #include 3. #include 4. #include 5. #include “sqlite3.h“ 6. 7. const int nCount = 500000; 8. 9. int main (int argc,char* argv) 10. 11. sqlite3* db; 12. sqlite3_open(“testdb.db“ , 13. sqlite3_exec(db,“PRAGMA synchronous =
3、 OFF; “,0,0,0); 14. sqlite3_exec(db,“drop table if exists t1“,0,0 ,0); 15. sqlite3_exec(db,“create table t1(id integer,xinteger,y integer ,weight real)“,0,0,0); 16. clock_t t1 = clock(); 17. 18. sqlite3_exec(db,“begin;“,0,0,0); 19. sqlite3_stmt *stmt; 20. const char* sql = “insert into t1 values(?,?, ?,?)“; 21. sqlite3_prepare_v2(db,sql,strlen(sql), 22. 23. for(int i=0;inCount;+i) 24. 25. / std:stringstream ssm; 26. / ssm“insert into t1 values(“i“, “i*2“,“i/2“,“i*i“)“; 27. / sqlite3_exec(db,ssm.str().c_str(),0, 0,0); 天地棋牌 http:/28. sqlite3_reset(stmt); 29. sqlite3_bind_int(stmt,1,i); 30. sqlite3_bind_int(stmt,2,i*2); 31. sqlite3_bind_int(stmt,3,i/2); 32. sqlite3_bind_double(stmt,4,i*i); 33. sqlite3_step(stmt); 34. 35. sqlite3_finalize(stmt); 36. sqlite3_exec(db,“commit;“,0,0,0); 37. clock_t t2 = clock(); 38. 39. sqlite3_close(db); 40. 41. std:cout“cost tima: “(t2-t1)/1000.“s “std:endl; 42. 43. return 0; 44.
《提升SQLite数据插入效率低、速度慢的方法》由会员m****分享,可在线阅读,更多相关《提升SQLite数据插入效率低、速度慢的方法》请在金锄头文库上搜索。
DB2发生死锁情况时应该怎么处理
Python 为何能成最强编程语言
面试前必须要知道的Redis面试
MySQL下自动删除指定时间以前的记录的操作方法
深入理解FastCGI协议以及在PHP中的实现
MySQL数据库性能优化之硬件瓶颈分析
NoSQL数据库大全收集整理
2018 – 2019 年前端 JavaScript 面试题
PHP文件包含漏洞的形式总结
5种使用Python代码轻松实现数据可视化的方法
改进JavaScript和Bust的互操作性:深入认识wasm-bindgen组件
C#图片缩放平移从功能分析到编码实现
详解网络蜘蛛的安全隐患及预防方法
利用NAP解除安全隐患自动隐藏你的IP地址
解决分布式数据库和离线网络中原子性问题的新方法
bbed恢复数据遇到延迟块清除的问题
Oracle Data Redaction数据加密
linux下du和df结果不一致的原因及处理
基于QMP实现对qemu虚拟机进行交互
解读Java并发队列BlockingQueue
2023-06-30 7页
2022-09-15 93页
2022-06-04 27页
2022-04-25 3页
2022-03-24 7页
2022-03-24 7页
2022-03-24 8页
2022-03-24 4页
2022-03-24 43页
2022-03-24 7页