欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQLite插入大量数据慢的解决方案

程序员文章站 2024-01-12 08:35:34
sqlite 插入数据很慢的原因:sqlite在没有显式使用事务的时候会为每条insert都使用事务操作,而sqlite是以文件的形式存在磁盘中,就相当于每次访问时都要打开一次文件,如果对数据进行大...

sqlite 插入数据很慢的原因:sqlite在没有显式使用事务的时候会为每条insert都使用事务操作,而sqlite是以文件的形式存在磁盘中,就相当于每次访问时都要打开一次文件,如果对数据进行大量的操作,时间都耗费在i/o操作上,所以很慢。

解决方法是显式使用事务的形式提交:因为我们开始事务后,进行的大量操作的语句都保存在内存中,当提交时才全部写入数据库,此时,数据库文件也就只用打开一次。

我在没有显式使用事务形式插入100条数据时用了12.226s;用显式事务形式,插入100条只用了0.172s,插入1000000条也才34.891s,相关很大吧。

显式使用事务的例子:

#include 
#include 
using namespace std;
#include "sqlite/sqlite3.h"
int main()
{
    sqlite3* db;
    int nresult = sqlite3_open("test.db",&db);
    if (nresult != sqlite_ok)
    {
        cout<<"打开数据库失败:"<