最近在做sqlite3的二次开发,看到API里面关于事务的时候,萌生了测试一下事务的开启与否对插入数据所需要的时间影响的想法,根据sqlite3的api,在后面测试的时候发现对于sqlite3来说事务的开启与否仅插入1w条数据,时间的差距就已经非常非常明显了,先说下测试环境:ubuntu 12.04, sqlite3 3.7.14.1,测试插入1w条数据。
   
    不开启事务时的测试代码如下:
   
    int insert_no_trans()
    {
   
    printf("<---------------------> \n"
            "go into function insert_no_trans()\n");

int j = 0;
    for (j = 0; j < 10000; j++)
    {
        sprintf(sql, "INSERT INTO [dev] ([id], [name], [age])\
                values (%d, '%s', %d)", j, "JGood", j);
        if(SQLITE_OK != sqlite3_exec
                (conn, sql, 0, 0, &err_msg))
        {
            fprintf(stderr, "INSERT ERROR: %s\n", err_msg);
            exit(EXIT_FAILURE);
        }
       
    }
    printf("INSERT all succussfully!\n");

printf("function insert_no_trans() end. \n"
            "<---------------------> \n");

return EXIT_SUCCESS;
    }
   
   
    开启事务的测试代码如下:
    int insert_with_trans()
    {
   
    printf("<---------------------> \n"
            "go into function insert_with_trans()\n");

sqlite3_exec(conn, "begin;", 0, 0, 0);  //开启事务

int j = 0;
    for (j = 0; j < 10000; j++)
    {
        sprintf(sql, "INSERT INTO [dev] ([id], [name], [age])\
                values (%d, '%s', %d)", j, "JGood", j);
        if(SQLITE_OK != sqlite3_exec(conn, sql, 0, 0, &err_msg))
        {
            is_succeed = false; //失败之后把标识设为false
            fprintf(stderr, "INSERT ERROR: %s\n", err_msg);
            break;
        }

转载于:https://www.cnblogs.com/iwantcomputer/archive/2012/12/14/8489829.html

关于事务开启与否对数据库插入数据所需时间的影响的讨论相关推荐

  1. Excel向数据库插入数据和数据库向Excel导出数据

    为了熟悉java里工作簿的相关知识点,所以找了"Excel向数据库插入数据和数据库向Excel导出数据"的功能来实现. 注意事项:1,mysql数据库: 2,需要导入的jar包有 ...

  2. mongo数据库插入数据_深入研究Mongo数据库

    mongo数据库插入数据 More popularly known as "mongoDB". It is a no-sql based database. 俗称" mo ...

  3. 使用mybatis向oracle数据库插入数据异常

    遇到了使用mybatis向oracle数据库插入数据异常的问题, 具体的报错如下:org.springframework.jdbc.UncategorizedSQLException: ### Err ...

  4. mysql1526_MySQL数据库插入数据出现 ERROR 1526 (HY000): Table has no partition for value xxx

    MySQL数据库插入数据出现 ERROR 1526 (HY000): Table has no partition for value xxx 工作的时候发现无法插入数据,报错: ERROR 1526 ...

  5. oracle数据库触发器怎么查询后插入,[求助][Oracle][ORA-00604][ORA-02067]触发器被触发时向远程数据库插入数据...

    环境: 数据库:Oracle 12c:数据库A(本地),数据库B(远程),在A中创建DBLink连接到B 工具:sqldevloper 问题: 数据库A中的Change表中创建了触发器T,After ...

  6. 微信小程序云开发入门-数据库插入数据(包含批量)

    一.前言 文章将介绍如何在微信小程序云开发中向云开发数据库插入数据(单条或批量). 写法有好几种,文章将会一一进行对比,看看每种写法之间有何优缺点,如何让代码看起来更优雅. 为了更加贴合实际的开发逻辑 ...

  7. java向数据库插入数据时的错误: Duplicate entry ‘‘ for key ‘PRIMARY‘ 问题解决

    java向数据库插入数据时的错误: Duplicate entry '' for key 'PRIMARY' 问题解决 参考文章: (1)java向数据库插入数据时的错误: Duplicate ent ...

  8. 已解决Python向数据库插入数据的字符串中含有单引号或双引号报错

    已解决Python向数据库插入数据的字符串中含有单引号或双引号报错:(102, b"Incorrect syntax near 'S'.DB-Lib error message 20018, ...

  9. C#如何操作Oracle并向数据库插入数据

    今天在做一个功能,在C#中连接数据库并向数据库插入数据.现在总结起来很简单. 1.首先添加微软的DLL--System.Data.OracleClient.dll,注意这里可能会提示此DLL过时,别怕 ...

  10. 在Linux中通过shell脚本向oracle数据库插入数据

    通过shell脚本向oracle数据库插入数据 思路 实现 shell脚本 数据文件 测试 思路 如何通过shell脚本更新数据库数据?要解决这个问题,首先,我们需要在脑中回忆一下我们通常是如何更新数 ...

最新文章

  1. 芯片焊接和PCB设计引脚的长度及位置对于焊接质量的教训
  2. Leetcode 226. 翻转二叉树 (每日一题 20210819)
  3. 3d建模电脑配置要求_学习3D建模需要什么软件,电脑配置应该如何?新手自学会遇到的问题...
  4. elasticsearch说了一些了,这次说说Solr【入门Solr这篇就够了】
  5. puppet puppet模块、file模块
  6. SRS 启动正常,拉流没画面,看SRS日志报错 srs is already running
  7. 游戏服务器维护启动需要多久,游戏服务器开机需要多长时间
  8. S - C语言实验——余弦
  9. apache日志管理
  10. 计算机电源的瓦数是什么,电脑的电源功率大小有区别吗?对电脑有什么影响吗?...
  11. SSM(SpringBoot+SpringMVC+Mybatis):班委信息管理附有GIF动图,博主可免费答疑
  12. echarts 圆环图渐变
  13. 富士通Fujitsu DPK1180K 打印机驱动
  14. 如何优雅的在word打公式
  15. Tensorflow图像识别-2
  16. 《小猪佩奇拜年歌》在QQ音乐和网易云音乐上线
  17. BeatSaber节奏光剑插件开发官方教程1-创建一个插件模板
  18. 蹦蹦鸟游戏代码-JavaSE版本
  19. linux sysctl常见用法
  20. 怎么快速暂停Google账户广告系列?

热门文章

  1. vmware esxi 4.0 上安装postfix,mailx发送邮件
  2. 我在富士康挨踢了七年(七. 激情与暴力3)
  3. WPF中DataGrid在没有数据的时候也可以显示水平滚动条
  4. 20一个自定义集合的自述
  5. UIButton设置UIControlContentHorizontalAlignment调整文字对齐方式
  6. CentOS 关闭防火墙和selinux
  7. hlg1492盒子【最小路径覆盖】
  8. 测试标准I/O缓冲的代码,
  9. 算法导论12.2节习题解答
  10. 换个skin,换个心情