分类: MySQL
MySQL的max_allowed_packet参数说明

max_allowed_packet 定义的是所允许的单条sql语句的大小。
引用官方的说法: http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_allowed_packet

You must increase this value if you are using large BLOB columns or long strings. It should be as big as the largest BLOB you want to use. The protocol limit for max_allowed_packet is 1GB. The value should be a multiple of 1024; nonmultiples are rounded down to the nearest multiple.

Property    Value
Command-Line Format    --max-allowed-packet=#
System Variable    max_allowed_packet
Scope    Global, Session
Dynamic    Yes
Type    integer
Default Value    4194304
Minimum Value    1024
Maximum Value    1073741824

解释:
该值的类型为integer,允许的最大值为1G (理论上4个字节的表达能力的上限是4G,也或许协议实现上硬编码了吧),修改
该变量的默认值为4MB,一般来讲是够的,如果存储大的BLOB列,可能不够,需要修改该配置
该值总是1KB的整数倍,最小值为1KB;修改的值应该是1024的整数倍,如果不是整数倍,则会按照小于该值的最接近的那个1024的整数倍进行截断处理,并产生1个warning;(注意: 如果设置的值小于1024,则自动调整为1024)如下:

将max_allowed_packet 设置为比 net_buffer_length 小的意义不大,所以,这里同样会出现一个warning,只是不会强制将max_allowed_packet修改为大于等于net_buffer_length的
比较专业的设置该值的方法为:

set global max_allowed_packet=102410241024;

session的max_allowed_packet是不允许修改的,修改了全局配置对当前session也不会生效的,只有重新连接才能看到变化,一般设置为1024M即可;


相关博文:

发表新评论