【业务功能篇133】 Mysql连接串优化性能问题

本文介绍了如何在MyBatisPlus中启用MySQL驱动的批量处理功能,以提升数据库插入性能。同时探讨了useAffectedRows参数的作用以及在连接池配置中的autoReconnect和failOverReadOnly设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  •  rewriteBatchedStatements=true开启了MySQL驱动程序的批量处理功能。

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?rewriteBatchedStatements=true

在MyBatis Plus框架中,批量插入是一种高效的数据库操作方式。通过开启rewriteBatchedStatements=true,可以获得许多优点,从而提高数据库插入性能、减轻负载以及简化代码。MyBatis Plus框架自带的批处理方法 可以直接调用使用,但是要注意mysql连接串要配置参数为true 否则这个性能还是不会起来

 IService<T>接口的saveBatch方法
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveBatch(Collection<T> entityList, int batchSize) {
    String sqlStatement = getSqlStatement(SqlMethod.INSERT_ONE);
    return executeBatch(entityList, batchSize, (sqlSession, entity) -> sqlSession.insert(sqlStatement, entity));
}

 

  • Mysql 连接参数 useAffectedRows 详解

Java mysql链接串:
jdbc:mysql://mysql安装IP:3306/db_test?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useAffectedRows=true


具体场景:当该值是false时,执行【UPDATE】语句,在该【UPDATE】的条件下可以找到3条记录,但是实际上只更新了2条数据,因为第三条数据将要修改的值与原来的值相同,则该【UPDATE】语句会返回3、而有时候我们希望他返回2、则设置该参数值为 TRUE
从哪个版本开始有这个参数:5.1.7

  • MySQL连接数据库时,添加语句:“allowMultiQueries=true”的作用:

1.可以在sql语句后携带分号,实现多语句执行。

可以执行批处理,同时发出多个SQL语句。

sql语句


不加allowMultiQueries=true之前,会报错

  •  autoReconnect=true&failOverReadOnly=false


如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat.
解决办法:
   一种. 如果不用hibernate的话, 则在 connection url中加参数: autoReconnect=true

    jdbc.url=jdbc:mysql://ipaddress:3306/database?autoReconnect=true&autoReconnectForPools=true

在使用数据库连接池的情况下,最好设置如下两个参数:

autoReconnect=true&failOverReadOnly=false

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值