往 Mysql 中,插入10000条简单数据。速度很缓慢,竟然要5分钟左右,

可是打开事务的话。一秒不到就搞定了



代码:

#include <iostream>
#include <winsock2.h>
#include <string> #include "mysql.h" #pragma comment(lib, "libmysql.lib"); using namespace std; int main()
{
MYSQL mysql;
mysql_init(&mysql); // 初始化 MYSQL *ConnStatus = mysql_real_connect(&mysql,"localhost","root","","sky",3306,0,0);
if (ConnStatus == NULL)
{
// 连接失败
int i = mysql_errno(&mysql);
string strError= mysql_error(&mysql);
cout <<"Error info: "<<strError<<endl; return 0;
} cout<<"Mysql Connected..."<<endl; string strsql;
MYSQL_RES *result=NULL; // 数据结果集 // 插入操作
strsql = "insert into t1 values(2,'lyb')"; mysql_query(&mysql,"START TRANSACTION"); // 开启事务, 假设没有开启事务,那么效率会变得很低下! for (int i=0; i<10000; i++)
{
mysql_query(&mysql,strsql.c_str());
} mysql_query(&mysql,"COMMIT"); // 提交事务 cout<<"insert end"<<endl; //释放结果集 关闭数据库
mysql_free_result(result);
mysql_close(&mysql);
mysql_library_end(); return 0;
}

总结:

在大量数据的插入,更改等操作时,应该开启事务。等一连串的操作结束之后,再提交事务。可提高程序运行效率

解决 C++ 操作 MySQL 大量数据插入效率低下问题的更多相关文章

  1. C++操作MySQL大量数据插入效率低下的解决方法

    #include <iostream> #include <winsock2.h> #include <string> #include "mysql.h ...

  2. 提升SQLite数据插入效率低、速度慢的方法

    前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代c语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候, ...

  3. 提升SQLite数据插入效率低、速度慢的方法(转)

    前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代C语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候, ...

  4. [转载]提升SQLite数据插入效率低、速度慢的方法

    转载地址:http://blog.csdn.net/chenguanzhou123/article/details/9376537#,如果有侵犯原创,请留言告知,本人会及时删除. 前言 SQLite数 ...

  5. TOAD FOR MYSQL 进行数据插入时乱码的解决办法---MariaDB 5.5

    最近使用mysql是发现插入的数据乱码,几经周折终于找到的解决方法,特作备忘. 开始有将mysql的字符集全部设置成utf8,如下: SHOW VARIABLES LIKE 'character_se ...

  6. MFC使用SQLite 学习系列 二:无法容忍的数据插入效率

    上一篇随笔中,介绍了,基本的使用没什么问题了,那么开始数据的插入. 一 问题--无法容忍的插入效率 代码写入基本完成,然后开始测试.起初,插入数据的时候基本上是插入每次插入9组数据,看不出来数据插入的 ...

  7. 解决Python操作MySQL中文乱码的问题

    原始代码: import os, sys, string import MySQLdb MYSQL_HOST = 'localhost' MYSQL_PORT = ' MYSQL_USER = 'ro ...

  8. java操作MySQL数据库(插入、删除、修改、查询、获取所有行数)

    插播一段广告哈:我之前共享了两个自己写的小应用,见这篇博客百度地图开发的两个应用源码共享(Android版),没 想到有人找我来做毕设了,年前交付,时间不是很紧,大概了解了下就接下了,主要用到的就是和 ...

  9. mysql DML 数据插入,删除,更新,回退

    mysql插入,删除,更新地址:https://wenku.baidu.com/view/194645eef121dd36a32d82b1.html http://www.cnblogs.com/st ...

随机推荐

  1. git 删除分支如何恢复

    强制删除了一个分支而后又想重新使用这个分支,该怎么找回该分支上的代码呢? 一:问题描述: 今天师父说上线几个功能,让我把开发的分支推送到远程.当打开git就傻眼了,之前开发好的分支被我删除了,就连推送 ...

  2. acm练习-day1

    描述现在,有一行括号序列,请你检查这行括号是否配对.输入第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于1 ...

  3. [Windows Server 2012] SQL Server 备份和还原方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:SQL S ...

  4. Vue实战之插件 sweetalert 的使用

    安装npm install sweetalert2@7.15.1 --save 封装 sweetalertimport swal from 'sweetalert2' export default { ...

  5. Mybatis学习总结三(动态SQL)

    通过mybatis提供的各种标签方法实现动态拼接sql. 一.if 和 where <select id="findUserList" parameterType=" ...

  6. JavaScipt30(第八个案例)(主要知识点:canvas)

    承接上文,这是第8个案例,要实现的效果是按住鼠标不放,进行拖动时可以在画布上画出不同粗细不同颜色的曲线. 附上项目链接: https://github.com/wesbos/JavaScript30 ...

  7. 07Oracle Database 数据表

    Oracle Database 数据表 DDL 数据定义语言 -  建立数据库对象 create /alter/ drop/ truncate 创建表 Create table table_name( ...

  8. 数据库——DBUtils和连接池

    第一章 DBUtils如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils.DBUtils就是JDBC的简 ...

  9. 通过Oracle函数SQL实现C# String.Format字符串格式化功能

    语言国际化要求,开发上要求Oracle数据库SQL中对应的返回信息-Message,实现一个通用函数调用,比如:提示信息内容:条码123456当前工站在FCT!”,即通用的信息内容格式化标准为:“条码 ...

  10. JSONP 应用

    受限于浏览器的同源安全策略, js 无法发起跨域的请求. 但是 HTML 中的 <script> 标签却可以引入跨域的文件使用. 而 JSONP 就是利用 <script> 的 ...