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

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

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

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

 IService接口的saveBatch方法
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveBatch(Collection 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语句

【业务功能篇133】 Mysql连接串优化性能问题_第1张图片
不加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

 

你可能感兴趣的:(Java,Spring,boot,mysql,数据库,优化)