0

我们都知道在一个查询中使用多个插入比运行多个查询要好。但是,我不知道 Mysql 最多支持多少个这些多个扩展值?我在网上搜索但没有找到正确的答案。我只是想知道这一点。

例子,

INSERT INTO tbl_name VALUES(1, 'John Doe'), (2, 'Peter England'), ....

我记得当我使用一些 MVC 框架时,它试图在一个查询中触发成百上千的插入,我曾经收到某种错误消息,例如Mysql server has gone away.

4

2 回答 2

1

您的查询的最终长度限制由max_allowed_pa​​cket设置设置 - 如果您超过该设置,查询将被截断并且几乎肯定会变得无效。

虽然执行多值插入更有效,但不要过分尝试执行数千个值集。尝试拆分它,这样你最多只做几百个,并且一定要确保查询字符串的长度不会接近 max_allowed_pa​​cket。

于 2012-08-10T20:38:28.047 回答
1

多次插入的限制,就像您正在谈论的那样,将受到数据包限制的约束。

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

这将影响所有查询类型,而不仅仅是插入。

为了添加更多上下文,您所说的MySQL 服务器已消失的错误将是超出数据包限制的结果。来自页面的引用:

如果您向服务器发送不正确或太大的查询,您也可能会收到这些错误。如果 mysqld 收到一个太大或乱序的数据包,它会假定客户端出现问题并关闭连接。如果您需要大查询(例如,如果您使用大 BLOB 列),您可以通过设置服务器的max_allowed_pa​​cket变量来增加查询限制,该变量的默认值为 1MB。您可能还需要增加客户端的最大数据包大小。有关设置数据包大小的更多信息,请参见第 C.5.2.10 节,“数据包太大”。

于 2012-08-10T20:38:37.437 回答