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

投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-07-25 我要评论

这篇文章主要介绍了C++操作MySQL大量数据插入效率低下的解决方法,需要的朋友可以参考下

通常来说C++操作MySQL的时候,往Mysql中插入10000条简单数据,速度非常缓慢,居然要5分钟左右,
而打开事务的话,一秒不到就搞定了!

具体实现代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#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;
}

总结:

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C MySQL一分钟可以插入数据量取决于多个因素,包括服务器的处理能力、网络带宽、表结构和索引设置以及插入操作的复杂度等等。 如果服务器性能较好,网速较快,并且插入操作相对简单,那么一分钟可以插入数据量可能会比较大。一般来说,可以达到数万条或者更多的数据。 然而,如果服务器性能较差,网络带宽受限,或者表结构和索引设置较复杂,插入操作较为耗时,那么一分钟插入数据量可能会比较少。可能只能插入几千条甚至更少的数据。 总体来说,MySQL在一分钟内的插入数据量是一个相对的概念,而不是一个确定的数字。它可以通过优化服务器性能,调整表结构和索引,以及优化插入操作等方式进行改善,从而达到更高的插入数据量。 为了确切地知道MySQL一分钟可以插入多少数据,最好的方式是进行性能测试实验,根据服务器和数据库的具体情况,进行多次插入操作并统计插入数据量,然后计算平均值,这样可以得出一个更准确的结果。 ### 回答2: 关于c程序往MySQL插入数据每分钟的数量,具体的插入速度会受到多个因素的影响。以下是一些常见的因素: 1. 数据库性能:MySQL的性能参数设置和服务器硬件配置对插入速度有显著影响。较高的性能设置和更高的硬件配置(例如,CPU、内存和磁盘速度)可以提高插入速度。 2. 程序优化:编写高效的C程序逻辑和使用适当的MySQL连接库(例如libmysql)可以提高插入速度。优化可以包括批量插入(使用一次MySQL插入多行数据)和减少不必要的操作(例如额外的查询和更新)。 3. 数据表结构:数据表的结构和索引设计也会影响插入速度。较简单的表结构、合适的索引和适切的数据类型选择可以提高插入性能。 4. 网络延迟:如果C程序是通过网络与MySQL服务器通信,网络延迟会对插入速度产生影响。较低的延迟网速可以提高插入速度。 总体而言,每分钟可以插入多少数据取决于上述因素和具体环境。在理想情况下,一般可以实现几千到几万的插入操作。然而,对于具体场景的准确评估需要测试和实际运行,因为每个应用程序和环境都有不同的因素和限制。 ### 回答3: MySQL插入速度取决于多个因素,包括硬件性能、数据库设计、索引、批量插入等。通常情况下,MySQL可以在一分钟内插入数千甚至数万条数据。 首先,硬件性能对插入速度有很大影响。高性能的CPU、快速的内存、高速磁盘和网络连接可以提高插入性能。 其次,数据库设计和索引的合理性也会影响插入速度。良好的数据库设计和合适的索引可以减少插入时的冲突和锁竞争,提高插入效率。 另外,批量插入是提高插入速度的有效策略之一。通过批量插入,减少了每次插入的网络交互和磁盘操作的次数,从而提高了插入速度。 根据以上因素,MySQL在一分钟内插入数据量可以达到数千到数万条。但是具体的插入速度还是需要根据实际情况进行测试和评估,因为不同的情况可能导致具体的插入速度有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值