zoukankan      html  css  js  c++  java
  • 解决 C++ 操作 MySQL 大量数据插入效率低下问题

    往 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; }



    总结:

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


  • 相关阅读:
    UVA138 Street Numbers(数论)
    UVA11388 GCD LCM(数论)
    POJ1088 滑雪(记忆化搜索)
    POJ1003 Hangover
    POJ1836 Alignment(LIS)
    POJ1062 昂贵的聘礼(最短路)
    POJ3083 Children of the Candy Corn(搜索)
    POJ1068 Parencodings(模拟)
    POJ1573 Robot Motion(模拟)
    POJ2632 Crashing Robots(模拟)
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6906757.html
Copyright © 2011-2022 走看看