在使用Mysql过程中不知道小伙伴会不会遇到max_allowed_packet的问题。今天我给大家整理下关于Mysql max_allowed_packet的配置知识。
废话不多说,直接进入主题。
mysql客户端跟mysql服务端进行packet通信传递数据的作用主要是
- 客户端发送到mysql 服务端的单个SQL STATEMENT
- 服务端发送到客户端的数据集
- master发往slave的一个binary log event
最新的Mysql 8.0单个packet可以允许的最大值是1GB。通常来说客户端和服务端都有自己的packet大小。
当传输的packet大于max_allowed_packet时,触发错误EN_NET_PACKET_TOO_LARGE并且关闭Connection。在有的客户端中也会显示信息Lost connection to MySQL server during query。
Mysql客户端配置packet方法是
shell> mysql --max_allowed_packet=32M
Mysql服务端配置packet方法是
shell> mysqld --max_allowed_packet=128M
当然也可以通过mysql的配置文件my.cnf去配置
[mysqld]max_allowed_packet=128M
也可以通过sql的方式去查询和设置packet的值
mysql> select @@max_allowed_packet;+----------------------+| @@max_allowed_packet |+----------------------+| 4194304 |+----------------------+1 row in set (0.00 sec)mysql>
或者
mysql> show variables like 'max_allowed_packet';+--------------------+---------+| Variable_name | Value |+--------------------+---------+| max_allowed_packet | 4194304 |+--------------------+---------+1 row in set (0.00 sec)mysql>mysql> set global max_allowed_packet = 1024*1024*10;Query OK, 0 rows affected
好了今天先写到这里吧。后面我会写一个半小时内给mysql导入一千万条(20个字段的表)的记录。