首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql多个插入支持多少个扩展值?

Mysql多个插入支持多少个扩展值?
EN

Stack Overflow用户
提问于 2012-08-11 04:35:09
回答 2查看 581关注 0票数 0

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

例如,

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

我记得当我使用一些MVC框架的时候,它试图在一个查询中触发成百上千的插入,我经常得到像Mysql server has gone away这样的错误消息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-11 04:38:37

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

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

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

更详细地说,您提到的MySQL server has gone away错误可能是由于超过数据包限制而导致的。该页面中的一句话:

如果向服务器发送的查询不正确或太大,也会出现这些错误。如果mysqld收到的数据包太大或顺序错误,它就会认为客户端出了问题,并关闭连接。如果需要大型查询(例如,如果您正在处理大型BLOB列),可以通过设置服务器的max_allowed_packet变量来增加查询限制,该变量的缺省值为1MB。您可能还需要增加客户端的最大数据包大小。有关设置数据包大小的更多信息,请参阅C.5.2.10节,“数据包太大”。

票数 1
EN

Stack Overflow用户

发布于 2012-08-11 04:38:28

查询的最终长度限制是由max_allowed_packet设置设置的-如果超过这个限制,查询就会被截断,并且几乎肯定会变得无效。

虽然执行多值插入更有效,但不要做过多的尝试,尝试执行数千个值集。尝试将其拆分,以便最多只能处理几百个,并且一定要确保查询字符串的长度不会接近max_allowed_packet。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11908880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档