mysql 数据写入速率成了瓶颈,我该怎么优化?

hnqxwhz 2013-06-20 07:55:56
项目上遇到瓶颈了,特来寻求大家帮助。
我的程序负责向本地MySQL数据的一个表写数据,但是项目处理的数据比较琐碎,表的每
行数据主要以VChar字符为主,其段长度在50~3000范围波动。具体举例eg.
| id | taskseq | protocoltype | threadnumintask | idinthread | framesize |
DestMac | SourMac | TypeorLength | Data | Upperlayer |
+----+---------+--------------+-----------------+------------+-------
----+-------------------+-------------------+--------------+-------+---------
---+

| 1 | 1 | Ethernet | 2 | 1 |
544 | F8:0F:41:F3:61:00 | 00:E0:4C:40:01:32 | 08 00 | 45 00 00 22 00
00 40 00 3E 11 B1 C9 C0 A8 06 A6 C0 A8 03 0B DE 03 30 12 00 0E FF 47 34 31 33
39 00 08 00 00 00 00 00 00 00 00 00 00 00 00 | IP |

代码上,我是用Qt下query执行SQL语句来插入数据,但query支持的SQL语句长度是
有限的,我怕溢出就只在query里塞了3行的插入语句(一次for循环调用一次query,向mysql表
中插3行数据)。在不考虑建立索引的情况下,我开了10个线程,每个线程分别维护一个
数据库连接,同时向这个表里写数据。大概测试了下,共写入102400行,耗时18830ms,
约五千行每秒。

我的这个表是用的Innodb引擎,其他设置都是默认的,没变过。

目前就是这个情况,项目一开始需求是800M/s的处理速度,我当时就给否定了,但是我
现在的写速度跟这个差的太多了,真心不敢拿出去交差,特来请教大家如何解决。
PS。就一个服务器,所有数据都必须存在这个服务器中。
...全文
1091 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wuerselen 2014-05-01
  • 打赏
  • 举报
回复
我也有这问题,由于使用了longText的格式。
Rotel-刘志东 2013-06-21
  • 打赏
  • 举报
回复
转化txt格式试一下,然后用load data导入试一下。
ACMAIN_CHM 2013-06-21
  • 打赏
  • 举报
回复
换成MYISAM存储引擎试一下。
WWWWA 2013-06-21
  • 打赏
  • 举报
回复
插入到TXT中保存,再用LOAD DATA导入 OR 打开事务插入试试
shoppo0505 2013-06-20
  • 打赏
  • 举报
回复
mysql不太清楚,但是如果是MS SQL的话,一次插入3行的话,你应该执行了3个insert。其实你可以用Batch解决,一次提交几十个乃至更多任务,让数据库一次执行。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧