我有一个大于1GB(〜1,4GB)的DB。 数据库上传被停止在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数据包的解释:
根据“Understanding MySQL Internals”(ISBN 0-596-00957-7)的第99页 ,这里是第1-3段解释它:
MySQLnetworking通信代码是在这样的假设下编写的:查询总是合理的短,因此可以在一个块中被服务器发送和处理,这在MySQL术语中被称为包 。 服务器为内存分配一个临时缓冲区来存储数据包,并且它提出了足够的要求来完全适合它。 这种架构需要采取一些预防措施,以避免服务器内存不足 – 这个选项可以完成数据包大小的限制。
与此选项有关的代码可以在sql / net_serv.cc中find。 看看my_net_read() ,然后按照对my_real_read()的调用,并特别注意net_realloc() 。
这个variables也限制了许多string函数结果的长度。 有关详细信息,请参阅sql / field.cc和sql / intem_strfunc.cc 。