sqlite提公升效率

2021-08-09 06:10:46 字數 1208 閱讀 1770

前言

sqlite資料庫由於其簡單、靈活、輕量、開源,已經被越來越多的被應用到中小型應用中。甚至有人說,sqlite完全可以用來取代c語言中的檔案讀寫操作。因此我最近編寫有關遙感資料處理的程式的時候,也將sqlite引入進來,以提高資料的結構化程度,並且提高大資料的處理能力(sqlite最高支援2pb大小的資料)。但是最開始,我發現,直接使用sql語句的插入效率簡直低的令人髮指的。後來不斷查文件、查資料,才發現了一條快速的「資料插入」之路。本文就以插入資料為例,整合網上和資料書中的各種提高sqlite效率的方法,給出提高sqlite資料插入效率的完整方法。(大神們勿噴)

1 資料

我使用的電腦是win7 64位系統,使用vc2010編譯,sqlite版本為3.7.15.2 ,電腦cpu為二代i3處理器,記憶體6g。

實驗之前,先建立要插入資料的表:

[sql] view plaincopy 

create table t1 (id integer , x integer , y integer, weight real)  

2 慢速——最粗暴的方法

sqlite的api中直接執行sql的函式是:

[cpp] view plaincopy 

int sqlite3_exec(  sqlite3*,    const char *sql,   int (*callback)(void*,int,char**,char**),   void *,   char **errmsg)  

直接使用insert語句的字串進行插入,程式部分**(完整**見後文),如下:

[cpp] view plaincopy 

for(int i=0;i

#include

#include

#include

#include "sqlite3.h"  

const int ncount = 500000;  

int main (int argc,char** argv)  

sqlite3_finalize(stmt);  

sqlite3_exec(db,"commit;",0,0,0);  

clock_t t2 = clock();  

sqlite3_close(db);  

std::cout<<"cost tima: "<<(t2-t1)/1000.<<"s"

}  

sqlite插入資料效率提公升解決方案

sqlite插入效率對比 建表 create table if not existstttable id integer primary key autoincrement,name varchar 100 筆者電腦配置 硬碟是250g三星ssd硬碟 cpu os 記憶體如下 理論 sqlite 插...

sqlite效能提公升

常規連線sqlite字串為 data source db.db version 3 用上述字串連線sqlite,然後用 system.data.sqlite 訪問資料庫時發現有下述幾個問題 往表中插入一條資料時大約耗時100ms 無論表中資料是否很多 這在插入大量資料時會等待很長時間 多執行緒訪問資...

怎樣提公升效率

今年3月份我順利通過了 pmp 考試,接著參加了5月的軟考,報考的是資訊系統專案管理師 高階 也順利通過。半年時間,同時通過這兩個考試,確實不易。之前我乙個同事單軟考那個就考了三回,歷時兩年。公司領導和同事對此都很吃驚,紛紛問我是怎麼做到的?平時我工作也很努力,空閒時間不多,怎麼半年時間就完成了很多...