Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用MySQL多次插入还是一次大查询?_Php_Mysql_Sql - Fatal编程技术网

Php 使用MySQL多次插入还是一次大查询?

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

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

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

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


以下哪一个更有效?

第二个选项效率更高,因为数据库调用更少

你可以尝试以下几点

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

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

正如在评论和其他回答中提到的,一次对数据库的调用比多次调用所需的总时间要少。但是,这种散装货有什么坏处吗

是的,有。首先,虽然整个插入过程花费的时间较少,但都发生在一个时段内。因此,表/行被锁定的时间段实际上更长。这种锁定可能会干扰其他查询。换句话说,大量装载可能会导致性能偶尔出现问题

不过,更重要的考虑因素是将数据存储在符合ACID的数据库中。如果应用程序在大容量插入之前停止,会发生什么情况?您愿意接受数据丢失吗?对于单个更新,您知道一旦插入成功完成,每个记录都会进入数据库。对于批量更新,您要么接受数据丢失,要么实施另一种机制来防止数据丢失


一般来说,最好在开始过早优化之前让代码正常工作。因为更新的数量仍然很小,我认为这是一个过早的优化,个别更新可能是一条出路。

B是。数据库服务器只需要处理一个操作。我完全同意你的观点,希望有人能为单独的插入提供一个好的论据。谢谢你的回答!