5

我有一个非常简单的问题。我在 MySQL 表中一次插入大量记录。它适用于大约 2000 条记录(实际上更多)。但是说我想插入 3000 条记录,而不是什么都不做。

我正在通过 AS3 将包含所有记录的数组通过 AMFPHP 发送到一个简单的 PHP 脚本以解析和插入数组。

这是正常的,还是我应该调查一下?

目前我正在将我的数组分割成 2000 条记录的一部分,并发送几个 AMFPHP 请求,而不仅仅是 1 个。

4

4 回答 4

11

PHP 的查询受“max_allowed_pa​​cket”配置选项的限制。它定义了查询字符串的绝对长度限制(以字符为单位)。请注意,这不仅仅是插入数据的总大小,而是整个查询字符串。SQL 命令、标点符号、空格等...

检查您的 3000 记录版本与 2000 记录版本相比多长时间,然后获取服务器的数据包长度限制:

SHOW VARIABLES WHERE Variable_name LIKE  '%max_allowed_packet%'

如果您的 3000 条记录版本超过此限制,则查询肯定会失败,因为它会在某处被截断

于 2011-04-20T18:53:03.090 回答
3

我认为一个查询中的插入数量并没有真正的限制。

相反,您可以发送到 MySQL 的查询的大小是有限制的,
请参阅:


因此,基本上,这取决于您在每个insert.

于 2011-04-20T18:52:48.637 回答
2

我会确保max_allowed_packet大于您的 PHP SQL 查询。

http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html

于 2011-04-20T18:56:03.520 回答
0

我认为 PHP 不会限制插入查询的数量,而是限制脚本可以占用的内存使用量和执行的最大时间

于 2011-04-20T18:57:51.167 回答