Mysql性能优化 max_allowed_packet

1,004次阅读
没有评论

一、max_allowed_packet 是什么?

指 mysql 服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小。

二、什么情况下遇到?

有时候大的插入和更新会被 max_allowed_packet 参数限制掉,导致失败。
场景一:将本地数据库迁移到远程数据库时运行 sql 错误。错误信息是 max_allowed_packet

场景二:插入数据时某个字段数据过于庞大 (使用 Elmentui 编辑器自带的图片加密,图片过多,地址超级长,最好用的时候改成自定义的),会报
Packet for query is too large (20682943>1048576). You can change this value on the server by setting the max_allowed_packet’variable.

三、确认 max_allowed_package

使用如下的方式可以确认当前设定值

select @@max_allowed_packet;
或
show variables like 'max_allowed_packet';

Mysql 性能优化 max_allowed_packet

四、修改 max_allowed_package

可以使用 set 命令来修改,但是只是临时修改,重启后即丢失。

set global max_allowed_packet=268435456;

也可以直接修改过 mysql 的设定文件并重启 mysql 服务,即可永久化保证设定。

根据 mysql 的安装不同修改的文件也会有所不同,普通安装方式可能会修改 my.cnf(/etc/my.cnf),这里使用 mysql 的官方镜像,其修改的文件应该为:/etc/mysql/mysql.conf.d/mysqld.cnf

修改内容:向此文件中添加如下设定

max_allowed_packet = 256M

修改前

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

修改后

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet = 256M

重启容器并确认

微信扫描下方的二维码阅读本文

正文完
 0
柹子丶
版权声明:本站原创文章,由 柹子丶 于2023-06-18发表,共计1341字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码