我有一个大于 1GB (~1,4GB) 的数据库。数据库上传在 1GB 时停止,因为 max_allowed_packet 是 1073741824 (1GB)。在文件 /etc/my.conf 中,我设置了 max_allowed_packet=2048M。
如何将 max_allowed_packet 1073741824 增加到更大?
谢谢你!
max_allowed_packet的最大值为 1G 或 1024M。
即使您将其设置得更高,MySQL 也不会加载超过 1GB 限制的数据。
MySQL 数据包用于处理行,尤其是批量处理。表中的 TEXT/BLOB 字段越小,MySQL 数据包的使用就越健壮。为了让您对它的使用更有信心,这里解释一下 MySQL 数据包是什么:
根据“了解 MySQL 内部结构”(ISBN 0-596-00957-7)的第 99 页,这里是第 1-3 段的解释:
MySQL 网络通信代码是在查询总是相当短的假设下编写的,因此可以在一个块中发送到服务器并由服务器处理,这在 MySQL 术语中称为数据包。服务器为临时缓冲区分配内存来存储数据包,并请求足够的内存来完全容纳它。这种架构需要采取预防措施以避免服务器内存不足——数据包大小的上限,此选项可实现这一点。
与此选项相关的代码可在sql/net_serv.cc 中找到 。查看my_net_read(),然后按照对my_real_read()的调用并特别注意 net_realloc()。
此变量还限制了许多字符串函数的结果的长度。有关详细信息,请参阅sql/field.cc和 sql/intem_strfunc.cc。
| 归档时间: |
|
| 查看次数: |
14146 次 |
| 最近记录: |