Mysql性能调优之max_allowed_packet使用及说明

目录
  • Mysql max_allowed_packet使用
    • max_allowed_packet是什么?
    • 什么情况下遇到?
    • 解决办法?
  • 写入Mysql报错超出max_allowed_packet
    • 查看当前配置
    • 也可以用select查看
    • 修改方法1(配置文件持久化修改)
    • 修改方法2(命令行临时修改)

Mysql max_allowed_packet使用

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.

解决办法?

调整mysql的配置文件

mysql 56中该参数修改好像无效,所以需要升级数据库到mysql57

window下修改配置文件my.ini 在mysqld段下添加

 max_allowed_packet = 64M 

后面的数字根据实际情况调优

linux下修改etc/my.cnf ,同样在mysqld段下添加

 max_allowed_packet = 64M 

注意改完参数后需要重启mysql服务

查看目前配置

show VARIABLES like '%max_allowed_packet%';

写入Mysql报错超出max_allowed_packet

Mysql会根据配置文件会限制server接受的数据包的大小。

如果写入大数据时,因为默认的配置太小,插入和更新操作会因为 max_allowed_packet 参数限制,而导致失败。

查看当前配置

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
1 row in set (0.00 sec)

也可以用select查看

mysql> select @@max_allowed_packet;
+----------------------+
| @@max_allowed_packet |
+----------------------+
|              4194304 |
+----------------------+
1 row in set (0.00 sec)

mysql> 

max_allowed_packet 如果不设置,默认值在不同的 MySQL 版本表现不同,有的版本默认1M,有的版本默认4M。

修改方法1(配置文件持久化修改)

vim /etc/my.cnf
[mysqld]
max_allowed_packet = 100M

注意:修改配置文件以后,需要重启mysql服务才能生效。

mysql> show variables like '%max_allowed_pack%';
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 104857600 |
+--------------------+-----------+
1 row in set (0.00 sec)

修改方法2(命令行临时修改)

mysql> set global max_allowed_packet = 100 * 1024 * 1024;
mysql> exit
[root@localhost opt]# 
[root@localhost opt]# mysql -uroot
mysql> 
mysql> select @@max_allowed_packet;
+----------------------+
| @@max_allowed_packet |
+----------------------+
|            104857600 |
+----------------------+
1 row in set (0.00 sec)

mysql> 

注意:

1.命令行修改时,不能用M、G,只能这算成字节数设置。配置文件修改才允许设置M、G单位。

2.命令行修改之后,需要退出当前回话(关闭当前mysql server链接),然后重新登录才能查看修改后的值。通过命令行修改只能临时生效,下次数据库重启后又复原了。

3.max_allowed_packet 最大值是1G(1073741824),如果设置超过1G,查看最终生效结果也只有1G。

[mysqld]
max_allowed_packet = 1G

mysql> show variables like '%max_allowed_pack%';
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1073741824 |
+--------------------+------------+
1 row in set (0.00 sec)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MySQL做读写分离提高性能缓解数据库压力

    目录 一 什么是读写分离 二 读写分离的好处 三 读写分离提高性能之原因 四 读写分离示意图 五 读写分离模拟 一 什么是读写分离 虽然知道处理大数据量时,数据库为什么要做读写分离,原因很简单:读写分离是MySQL优化的一方面,它可以提高性能,缓解数据库压力,缓解服务器压力. MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”.基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询. 数据库复制被用来把事务性查询导致的变更同步到集群

  • MYSQL 数据库时间字段 INT,TIMESTAMP,DATETIME 性能效率的比较介绍

    目录 一.准备工作 1.1 建表 1.2 插入100万条测试数据 二.MyISAM引擎 2.1 MyISAM 引擎无索引下的 dint/dtimestamp/d_datetime 2.1.1 int 类型是否调用 UNIX_TIMESTAMP 优化对比 2.1.2 timestamp 类型是否调用 UNIX_TIMESTAMP 优化对比 2.1.3 datetime 类型是否调用 UNIX_TIMESTAMP 优化对比 2.2 MyISAM 引擎有索引下的 dint/dtimestamp/d_d

  • 5招带你轻松优化MySQL count(*)查询性能

    目录 前言 1 count(*)为什么性能差 2 如何优化count(*)性能 2.1 增加redis缓存 2.2 加二级缓存 2.3 多线程执行 2.4 减少join的表 2.5 改成ClickHouse 3 count的各种用法性能对比 前言 最近我在公司优化过几个慢查询接口的性能,总结了一些心得体会拿出来跟大家一起分享一下,希望对你会有所帮助. 我们使用的数据库是Mysql8,使用的存储引擎是Innodb.这次优化除了优化索引之外,更多的是在优化count(*). 通常情况下,分页接口一般

  • 从mysql读写分离着手提升服务器性能

    目录 CentOS 安装 MySQL 主从搭建准备工作 主机配置 从机配置 MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举一个成功的例子,后面有时间再和大家分享下使用 Docker 搭建环境,那样就 100% 成功了. CentOS 安装 MySQL 自己玩 Linux 松哥一般首选 Ubuntu,不过公司里边使用一般还是 CentOS 为主,因此这里松哥就以 CentOS 为例来向大家演示整

  • MySQL查询性能优化七种方式索引潜水

    目录 前言: 有读者可能会一脸懵? 啥是索引潜水? 你给起的名字的吗?有没有索引蛙泳? 这个名字还真不是我起的,今天要讲的知识点就叫索引潜水(Index dive) . 先要从一件怪事说起: 我先造点数据复现一下问题,创建一张用户表: CREATE TABLE `user` (  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',  `name` varchar(100) NOT NULL DEFAULT '' COM

  • 10个MySQL性能调优的方法

    MYSQL 应该是最流行了 WEB 后端数据库.WEB 开发语言最近发展很快,PHP, Ruby, Python, Java 各有特点,虽然 NOSQL 最近越來越多的被提到,但是相信大部分架构师还是会选择 MYSQL 来做数据存储. MYSQL 如此方便和稳定,以至于我们在开发 WEB 程序的时候很少想到它.即使想到优化也是程序级别的,比如,不要写过于消耗资源的 SQL 语句.但是除此之外,在整个系统上仍然有很多可以优化的地方. 1. 选择合适的存储引擎: InnoDB 除非你的数据表使用来做

  • 关于MySQL性能调优你必须了解的15个重要变量(小结)

    前言: MYSQL 应该是最流行了 WEB 后端数据库.虽然 NOSQL 最近越来越多的被提到,但是相信大部分架构师还是会选择 MYSQL 来做数据存储.本文作者总结梳理MySQL性能调优的15个重要变量,又不足需要补充的还望大佬指出. 1.DEFAULT_STORAGE_ENGINE 如果你已经在用MySQL 5.6或者5.7,并且你的数据表都是InnoDB,那么表示你已经设置好了.如果没有,确保把你的表转换为InnoDB并且设置default_storage_engine为InnoDB. 为

  • mysql sql语句性能调优简单实例

     mysql sql语句性能调优简单实例 在做服务器开发时,有时候对并发量有一定的要求,有时候影响速度的是某个sql语句,比如某个存储过程.现在假设服务器代码执行过程中,某个sql执行比较缓慢,那如何进行优化呢? 假如现在服务器代码执行如下sql存储过程特别缓慢: call sp_wplogin_register(1, 1, 1, '830000', '222222'); 可以按如下方法来进行调试: 1. 打开mysql profiling: 2. 然后执行需要调优的sql,我们这里执行两条sq

  • 使用MySQL的Explain执行计划的方法(SQL性能调优)

    目录 前言 1. explain的使用 2. explain字段详解 id列 select_type列 table列 partitions列 type列 system const eq_ref ref ref_or_null index_merge range index ALL possible_keys列 key列 key_len列 ref列 rows列 filtered列 Extra列 Using where Using index Using filesort Using tempora

  • MySQL参数调优实例探究讲解

    目录 一.MySQL 参数调优 1.一些生产常用查询命令 2.分析慢查询 3.分析连接数 4.缓冲区调优 Key_buffer_size 5.临时表调优 Created_tmp_tables 6.分析 Open Table 使用情况 7.查看 MySQL进程使用情况 8.查询缓存 query cache 9.分析SQL排序与锁及文件使用与表扫描情况 二.MySQL优化参数实战 总结 一.MySQL 参数调优 1.一些生产常用查询命令 -- 查看数据库里正在执行的sql语句 show proces

  • 关于redis状态监控和性能调优详解

    前言 对于任何应用服务和组件,都需要一套完善可靠谱监控方案. 尤其redis这类敏感的纯内存.高并发和低延时的服务,一套完善的监控告警方案,是精细化运营的前提. 本文主要给大家介绍了关于redis状态监控和性能调优的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1.redis-benchmark redis基准信息,redis服务器性能检测 例如: 检测redis服务器性能,本机6379端口的实例,100个并发连接,100000个请求 redis-benchmark

  • SQL Server性能调优之缓存

    在执行任何查询时,SQL Server都会将数据读取到内存,数据使用之后,不会立即释放,而是会缓存在内存Buffer中,当再次执行相同的查询时,如果所需数据全部缓存在内存中,那么SQL Server不会产生Disk IO操作,立即返回查询结果,这是SQL Server的性能优化机制. 一,主要的内存消费者(Memory Consumer) 1,数据缓存(Data Cache) Data Cache是存储数据页(Data Page)的缓冲区,当SQL Server需要读取数据文件(File)中的数

  • AngularJS进行性能调优的7个建议

    AnglarJS作为一款优秀的Web框架,可大大简化前端开发的负担.近日Sebastian Fröstl在一篇博文<AngularJS Performance Tuning for Long Lists>中表示AnglarJS在处理包含复杂数据结构的大型列表时,其运行速度会非常慢.他在文中同时分享了解决方案.下面为该文的译文. AnglarJS很棒,但当处理包含复杂数据结构的大型列表时,其运行速度就会非常慢.这是我们将核心管理页面迁移到AngularJS过程中遇到的问题.这些页面在显示500行

  • web性能优化之javascript性能调优

    JavaScript 是一个比较完善的前端开发语言,在现今的 web 开发中应用非常广泛,尤其是对 Web 2.0 的应用.随着 Web 2.0 越来越流行的今天,我们会发现:在我们的 web 应用项目中,会有大量的 JavaScript 代码,并且以后会越来越多.JavaScript 作为一个解释执行的语言,以及它的单线程机制,决定了性能问题是 JavaScript 的软肋,也是 web 软件工程师们在写 JavaScript 需要高度重视的一个问题,尤其是针对 Web 2.0 的应用.绝大多

  • Java性能调优概述

    程序性能的主要表现点: 执行速度:程序的反映是否迅速,响应时间是否足够短 内存分配:内存分配是否合理,是否过多地消耗内存或者存在内存泄漏 启动时间:程序从运行到可以正常处理业务需要花费多少时间 负载承受能力:当系统压力上升时,系统的执行速度.响应时间的上升曲线是否平缓 衡量程序性能的主要指标: 执行时间:程序从运行到结束所使用的时间 CPU时间:函数或者线程占用CPU的时间 内存分配:程序在运行时占用内容的空间 磁盘吞吐量:描述I/O的使用情况 网络吞吐量:描述网络的使用情况 响应时间:系统对用

随机推荐