批量插入是否比多个单插入更少系统密集?

时间:2011-08-22 14:45:39

标签: mysql bulkinsert

我在服务器上有大约50个脚本,每秒插入3到6组数据。我发现MySQL反过来占用了所有系统资源,有时它会崩溃服务器。

我在想,如果我收集5分钟的查询并为每个脚本执行1次批量插入,那么它会有所帮助,但它会有所帮助吗?有没有人有过切换到批量插入的经验?

我的表格是MyISAM(如果需要,可以更改它们,如果我不丢失数据)。 MySQL版本:5.1.56

由于

3 个答案:

答案 0 :(得分:2)

这将是一个明显的显着差异。使用批量,您可以从许多数据库打开,查询,接近单个打开,多个查询和关闭。如果你想进一步限制负载,只需将它们写入平面文件,并在非高峰时间将一个cron作业进程写入数据库

答案 1 :(得分:2)

批量插入更快。但在这种情况下你应该关心查询长度;长度必须小于max_allowed_packet - 一个数据包或任何生成/中间字符串的最大大小

答案 2 :(得分:0)

一些建议:

  • 批量插入,例如INSERT INTO ... VALUES (...),(...),(...);
  • 将存储过程设为批量插入。所以你可以插入10或20个bulk(a1,a2,a3,b1,b2,b3);
  • Hack:制作一张Blackhole类型的桌子。按存储过程插入。在该表上创建一个只插入真实表的触发器。 (它的工作原理非常快!)