我有一个大于 1GB (~1,4GB) 的数据库。数据库上传在 1GB 时停止,因为 max_allowed_packet 是 1073741824 (1GB)。在文件 /etc/my.conf 中,我设置了 max_allowed_packet=2048M。
我怎样才能将 max_allowed_packet 1073741824 增加到更大?
谢谢你!
答案1
坏消息
最大值最大允许数据包数是1G或者1024M。
即使你将其设置得更高,MySQL 也不会加载超出 1GB 限制的数据。
好消息
MySQL 数据包用于处理行,尤其是批量处理。表中的 TEXT/BLOB 字段越小,MySQL 数据包的使用就越可靠。为了让你对其使用更有信心,下面是对 MySQL 数据包的解释:
根据“了解 MySQL 内部原理”第 99 页(ISBN 0-596-00957-7),以下是第 1-3 段对此的解释:
MySQL 网络通信代码是在这样的假设下编写的:查询总是相当短,因此可以以一个块的形式发送到服务器并由服务器处理,这被称为包用 MySQL 术语来说。服务器为临时缓冲区分配内存来存储数据包,并请求足够的内存来完全容纳它。此架构需要采取预防措施以避免服务器内存耗尽——对数据包的大小进行限制,此选项可以实现这一点。
与此选项相关的代码位于 sql/net_serv.cc。 看一眼我的网络读取(),然后按照呼叫我的_真实_读取()并特别注意 净_realloc()。
此变量还限制了许多字符串函数结果的长度。请参阅sql/字段.cc和 sql/intem_strfunc.cc了解详情。