Php 使用MySQL多次插入还是一次大查询?
我有机会以两种方式插入大量数据(大约每5分钟插入30行): A) 使用PHP构建一个插入函数,对于每一个新的数据段,只需调用该函数并插入大约30次 B) 使用PHP,通过为每个总线追加SQL字符串,然后只插入一次,构建一个大查询Php 使用MySQL多次插入还是一次大查询?,php,mysql,sql,Php,Mysql,Sql,我有机会以两种方式插入大量数据(大约每5分钟插入30行): A) 使用PHP构建一个插入函数,对于每一个新的数据段,只需调用该函数并插入大约30次 B) 使用PHP,通过为每个总线追加SQL字符串,然后只插入一次,构建一个大查询 以下哪一个更有效?第二个选项效率更高,因为数据库调用更少 你可以尝试以下几点 insert into table imatable values (something, something, something), (somethingelse, somethingel
以下哪一个更有效?第二个选项效率更高,因为数据库调用更少 你可以尝试以下几点
insert into table imatable values (something, something, something), (somethingelse, somethingelse, somethingelse), (etc, etc, etc)
在本例中,执行单个插入或批量插入的问题不应该主要与性能有关。任何数据库都应该能够处理6条记录/分钟的插入速率 正如在评论和其他回答中提到的,一次对数据库的调用比多次调用所需的总时间要少。但是,这种散装货有什么坏处吗 是的,有。首先,虽然整个插入过程花费的时间较少,但都发生在一个时段内。因此,表/行被锁定的时间段实际上更长。这种锁定可能会干扰其他查询。换句话说,大量装载可能会导致性能偶尔出现问题 不过,更重要的考虑因素是将数据存储在符合ACID的数据库中。如果应用程序在大容量插入之前停止,会发生什么情况?您愿意接受数据丢失吗?对于单个更新,您知道一旦插入成功完成,每个记录都会进入数据库。对于批量更新,您要么接受数据丢失,要么实施另一种机制来防止数据丢失
一般来说,最好在开始过早优化之前让代码正常工作。因为更新的数量仍然很小,我认为这是一个过早的优化,个别更新可能是一条出路。B是。数据库服务器只需要处理一个操作。我完全同意你的观点,希望有人能为单独的插入提供一个好的论据。谢谢你的回答!