批量插入限制mySQL PHP

时间:2016-04-28 17:55:31

标签: php mysql insert bulkinsert

我需要使用PHP脚本在mySQL表中进行多次插入,比如说$login_user=$row['your_column_name_there'],但是这个数字可能超过Table1所以我想知道是否有插入限制作为内存或数字mySQL中的行数?此外,如果此限制因服务器而异吗?

2 个答案:

答案 0 :(得分:1)

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

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

具有多个INSERT条目的VALUES语句可以加载尽可能多的数据,以适应该数据包大小。

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

答案 1 :(得分:0)

google max_allowed_pa​​cket。设置它与你的记忆允许的一样高。 如果strlen($ YourQueryString)< =这个限制,你可以发送它

例如,一旦我想最大化php脚本的吞吐量,所以我收集行并计算它们strlen直到我点击max_allowed_pa​​cket,然后发送它。在循环中。它比限制行数要快得多。