使用大量数据包时不会出现“数据包太大”错误

时间:2010-12-10 03:56:07

标签: mysql

我的情况很简单。

我有一台配置了max_allowed_pa​​cket设置为16M的服务器。它正在运行Percona Server 5.1.52。

我在perl中编写了一个简单的脚本来执行大量的批量插入。通过了解我通过DBI发送的数据字符串有多大,我大致了解数据包的大小。

无论批量插入MySQL的大小如何接受数据包并执行插入操作,但我希望它能为16M以上的任何内容提供数据包太大错误。

这里真的很奇怪......

如果我将max_allowed_pa​​cket设置为16777215(比16M少一个字节)或更低的值,我会得到超过该大小的数据包的错误,显然不会得到该大小的数据包的错误。

因此,似乎在任何低于16M的情况下都会遵守数据包限制,但是16M或更高并且它完全被忽略。

有什么可能导致这种情况的想法?这真是奇怪而且大多数人都遇到了与max_allowed_pa​​cket相反的问题。

mysql客户端是否可能正在进行一些自动分块?服务器似乎只运行一个大查询,因此自动分块似乎不太可能,因为它可能显示为多个插入。

我可以查看任何变量以获取有关正在发生的事情的更多信息吗?

2 个答案:

答案 0 :(得分:0)

你在插什么?如果它只是非常大的BLOB,max_allowed_packet没有效果。

常规字段的消息被分割并重新组装为网络协议。该参数用于传递BLOB字段。请参阅documentation

答案 1 :(得分:0)

我将此报告为MySQL错误,并且已经过验证。所以,我想现在就是这样。

这是5.1.52及以上的问题。

此处有错误报告:http://bugs.mysql.com/58887