我需要使用PHP脚本在mySQL表中进行多次插入,比如说$login_user=$row['your_column_name_there']
,但是这个数字可能超过Table1
所以我想知道是否有插入限制作为内存或数字mySQL中的行数?此外,如果此限制因服务器而异吗?
答案 0 :(得分:1)
这里的主要限制因素是MySQL接受的语句有多长。这是使用max_allowed_packet
系统变量定义的。
在my.cnf
文件中设置此值或等效于1GB通常没问题。除此之外的任何东西都是荒谬的,但是如果你有足够的记忆来容纳它,你就可以自由地增加它。请记住,客户端和服务器通常都需要在内存中,所以如果它在同一台机器上,理论上需要2GB。不要在这里太疯狂。
具有多个INSERT
条目的VALUES
语句可以加载尽可能多的数据,以适应该数据包大小。
如果您正在进行非常大的导入,LOAD DATA INFILE
通常要快得多,但您必须以可容纳的格式准备数据。 CSV文件通常最容易使用。
答案 1 :(得分:0)
google max_allowed_packet。设置它与你的记忆允许的一样高。 如果strlen($ YourQueryString)< =这个限制,你可以发送它
例如,一旦我想最大化php脚本的吞吐量,所以我收集行并计算它们strlen直到我点击max_allowed_packet,然后发送它。在循环中。它比限制行数要快得多。