我的情况很简单。
我有一台配置了max_allowed_packet设置为16M的服务器。它正在运行Percona Server 5.1.52。
我在perl中编写了一个简单的脚本来执行大量的批量插入。通过了解我通过DBI发送的数据字符串有多大,我大致了解数据包的大小。
无论批量插入MySQL的大小如何接受数据包并执行插入操作,但我希望它能为16M以上的任何内容提供数据包太大错误。
这里真的很奇怪......
如果我将max_allowed_packet设置为16777215(比16M少一个字节)或更低的值,我会得到超过该大小的数据包的错误,显然不会得到该大小的数据包的错误。
因此,似乎在任何低于16M的情况下都会遵守数据包限制,但是16M或更高并且它完全被忽略。
有什么可能导致这种情况的想法?这真是奇怪而且大多数人都遇到了与max_allowed_packet相反的问题。
mysql客户端是否可能正在进行一些自动分块?服务器似乎只运行一个大查询,因此自动分块似乎不太可能,因为它可能显示为多个插入。
我可以查看任何变量以获取有关正在发生的事情的更多信息吗?
答案 0 :(得分:0)
你在插什么?如果它只是非常大的BLOB,max_allowed_packet
没有效果。
常规字段的消息被分割并重新组装为网络协议。该参数用于传递BLOB字段。请参阅documentation。
答案 1 :(得分:0)