使用MySQL插入多次或1大查询?

时间:2014-01-12 12:11:18

标签: php mysql sql

我有机会以两种方式插入大量数据(每5分钟约30行):

A)使用PHP构建一个插入函数,对于每一个新的数据片段,只需调用该函数并插入约30次

B)使用PHP并通过附加每个总线的SQL字符串构建一个大查询,然后只插入一次

哪一个更有效?

2 个答案:

答案 0 :(得分:1)

由于数据库调用较少,第二种选择会更有效。

您可以尝试以下方面的内容。

insert into table imatable values (something, something, something), (somethingelse, somethingelse, somethingelse), (etc, etc, etc)

答案 1 :(得分:1)

在这种情况下,执行单个插入或批量插入的问题不应主要与性能有关。任何数据库都应该能够处理6个记录/分钟的插入速率。

正如评论和其他答案中所提到的,对数据库的单次调用将比多次调用需要更少的整体时间。但是,这种批量装载是否存在缺点?

是的,有。首先,尽管整体插入花费的时间较少,但这一切都发生在一个时期内。因此,表/行被锁定的时间段实际上更长。这种锁定可能会干扰其他查询。换句话说,批量加载可能会导致性能偶尔出现打嗝。

但是,更重要的考虑因素是将数据存储在符合ACID标准的数据库中。如果应用程序在批量插入之前发生故障会发生什么?你愿意接受数据丢失吗?通过单独更新,您知道一旦插入成功完成,每条记录都会进入数据库。通过批量更新,您必须接受数据丢失或实施其他机制来阻止它。

作为一般规则,在开始过早优化之前,最好让代码正常工作。由于更新量仍然很小,我认为这是一个过早的优化,个人更新可能是要走的路。