`

MySQL-max_allowed_packet

阅读更多

MySQL--max_allowed_packet

项目框架:springmvc+spring3+mybatis

数据库mysql5.5

服务器是阿里云的,但实际上阿里云的机器是万网的,配置

 

MySQL-max_allowed_packet

 

有这么一个需求,就是需要批处理向数据库一次性插入50000条数据,当时对表做了分区,开始是只用一次插入操作插入50000条数据,debug时到执行插入的时候就突然卡住了,卡到我的耐心资源超时,所以就把它咔嚓了。然后改了代码,换成一个java For 循环,一次只插1000条数据循环50次插入,大约7.3秒插入完成。接着又换成每次插10000条,分循环5次插入,时间为6.4秒。没道理一次50000需要这么久的时间,于是昨天临走前机器没关,让它跑一次50000条的插入,看看究竟会怎样。第二天早上发现插入失败,日志打了异常:

 

 

org.springframework.dao.TransientDataAccessResourceException:

### Error updating database. Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (3500111 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

### The error may involve com.yiliwu.ecouponcard.core.dao.EcKeyMapper.insertBatch-Inline

### The error occurred while setting parameters

### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (3500111 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

; SQL []; Packet for query is too large (3500111 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.; nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (3500111 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

 

可见mysql服务器端的参数max_allowed_packet设置过小了,它默认是1M,而我们提交的Packet有3M。登录服务器,找到mysql的配置文件my.cnf,在[mysqld]下加上max_allowed_packet=16M,保存重启mysql后,一次插入50000条成功,耗时7.2秒。

 

对于在for循环中插入数据库操作会造成多次IO性能损耗,必然会在一定程度上减慢插入速度,所以循环50次与循环5次的差异还是可以看到的,7.3>6.4,但是一次50000条的耗时为7.2还是耐人琢磨,我将它暂时归为不完全归纳造成的误差,毕竟不同时段主机的忙闲还是会有些差异的,理论上应该会更快。

 

本文来源于:http://www.07net01.com/zhishi/478221.html

分享到:
评论

相关推荐

    mysql5.7 修改max_allowed_packet方法

    ### MySQL 5.7 中 max_allowed_packet 参数的理解与调整 #### 一、max_allowed_packet 参数简介 在MySQL数据库中,`max_allowed_packet` 参数用于控制客户端与服务器之间单个数据包的最大大小。此参数对诸如大BLOB...

    Mysql的max_allowed_packet设定

    MySQL中的`max_allowed_packet`参数是一个非常重要的设置,它决定了MySQL服务器能够接收的最大数据包大小。这个设置在处理大数据操作,如导入大体积的数据文件、执行包含大量数据的SQL语句时尤其关键。如果某个...

    mysql设置max_allowed_packet_解决_MySQL_Error_2006

    mysql设置max_allowed_packet_解决_MySQL_Error_2006

    如何修改mysql数据库的max_allowed_packet参数

    在MySQL数据库中,`max_allowed_packet` 是一个非常重要的参数,它定义了客户端与服务器之间可以传输的最大数据包大小。这个参数对处理大数据操作,如导入大文件、执行大查询或者传输大对象(如BLOB或TEXT列)时至关...

    MySQL 5.5的max_allowed_packet属性的修改方法

    在MySQL数据库系统中,`max_allowed_packet`是一个非常重要的配置参数,它决定了服务器可以处理的最大数据包大小。这个参数主要用于限制单次传输的数据量,防止因大数据操作导致内存溢出或者网络阻塞。在MySQL 5.5...

    mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)

    在MySQL数据库系统中,`max_allowed_packet`是一个关键的系统变量,它决定了服务器能够处理的最大数据包大小。这个参数主要用于限制单次传输的数据量,包括INSERT、UPDATE等操作中的大块数据,以及LOAD DATA INFILE...

    HurleyWong#TechNote#MySQL max_allowed_packet过小引起的问题1

    MySQL max_allowed_packet过小引起的问题报错如下com.mysql.jdbc.PacketTooBigException: Packet

    MySQL学习-程序选项修改器和使用选项设置程序变量.pdf

    例如,`mysql`客户端有一个名为`max_allowed_packet`的变量,用于控制通信缓冲区的最大大小。要将`max_allowed_packet`变量设置为16MB,可以使用以下命令: - `mysql --max_allowed_packet=16777216` - `mysql --max...

    mysql-8.0.27安装

    max_allowed_packet=1024M max_connections=1000 # Recommended in standard MySQL setup sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION wait_timeout=2147483 ...

    mysql-linux版详细安装教程

    max_allowed_packet = 1073741824 ``` 启动 MySQL 1. 开机自启:cd /data/mysql/support-files/,sudo cp mysql.server /etc/init.d/mysql,sudo chmod +x /etc/init.d/mysql 2. 注册服务:sudo chkconfig --add ...

    RockyLinux9.0 yum安装 mysql8.0

    max_allowed_packet = 32M sort_buffer_size = 1M join_buffer_size = 1M thread_cache_size = 600 #thread_concurrency = 8 #query_cache_size = 128M #query_cache_limit = 2M #query_cache_min_res_unit = 2k ...

    编译安装lamp所需要的安装包

    max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K read_buffer_size = 256K read_rnd_buffer_size = 256K net_buffer_length = 8K thread_stack = 192K ``` - 重启MySQL服务以应用...

    Mysql的longblob字段插入数据问题解决

    然而,在实际应用中,特别是涉及大数据量的`LONGBLOB`字段时,可能会遇到一些限制问题,尤其是在MySQL 5.5版本中,默认的`max_allowed_packet`变量值为1MB,这可能导致插入超过1MB的数据时出现错误。 当尝试插入的...

    MySQL 导入慢的解决方法

    mysql> show variables like 'max_allowed_packet'; mysql> show variables like 'net_buffer_length'; ``` - **构建`mysqldump`命令**: ```bash mysqldump -u root -p supideajb51.net goodclassification -...

    mysql.docx

    本篇将详细探讨`max_allowed_packet`参数和`show profiles`功能,以及`wait_timeout`设置对MySQL性能的影响。 `max_allowed_packet`参数用于控制MySQL服务器接收或发送的最大数据包大小。默认情况下,这个值可能...

Global site tag (gtag.js) - Google Analytics