批量插入限制mySQL PHP


Batch Insert Limit mySQL PHP

我需要使用PHP脚本在mySQL表中进行多次插入,比如Table1,但数量可能超过1000,所以我想知道mySQL中是否有内存或行数的插入限制?此外,如果此限制因服务器而异?

这里的主要限制因素是MySQL将接受多长时间的语句。这是用max_allowed_packet系统变量定义的。

my.cnf文件或等效文件中将其设置为1GB通常是可以的。除此之外的任何事情都是荒谬的,但如果你有足够的内存来容纳它,你可以自由地增加它。记住,客户端和服务器通常都需要内存,所以如果在同一台机器上,理论上需要2GB。不要在这里太疯狂。

具有多个VALUES条目的INSERT语句可以加载该数据包大小所能容纳的数据。

如果您正在进行真正的大型导入,LOAD DATA INFILE通常要快得多,但您必须以它可以适应的格式准备数据。CSV文件通常是最容易在这里使用的。

谷歌最大允许数据包。将其设置为内存允许的最高值。if strlen($YourQueryString)<=这个限额,你可以发送

例如,有一次我想最大限度地提高php脚本的吞吐量,所以我收集行并计算它们的strlen,直到我达到max_allowed_packet,然后发送它。在循环中。这比限制行数要快得多。