【问题标题】:Are bulk inserts less system intensive than multple single inserts?批量插入的系统密集度是否低于多个单次插入?
【发布时间】:2011-08-22 14:45:38
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: mysql bulkinsert


    【解决方案1】:

    这将是一个明显的明显差异。使用批量,您正在从多个数据库打开、查询、关闭更改为单个打开、多个查询和关闭。如果您想进一步限制负载,只需将其中的大量写入一个平面文件,并让一个 cron 作业在非高峰时间将该文件写入数据库

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        一些建议:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-09-06
          • 2021-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多