JDBC的批处理学习rewriteBatchedStatements=true

如果在不添加批处理指令的情况下,mysql默认是不使用批处理操作,如果在url尾部添加rewriteBatchedStatements=true

可以使当前连接 使用批处理操作

创建数据库表结构

create table test(
id int primary key auto_increment,
name varchar(20),
age int,
sex varchar(10));

未使用批出的url链是

jdbc:mysql://localhost:3306/mysql1

测试源码是:

复制代码
package JDBCDemo;

import java.sql.Connection;
import java.sql.PreparedStatement;

import org.junit.Test;

import JDBCUtils.jdbcUtils;

public class JDBCdemo5 {
    /*
     * 批处理实验 在批处理情况下 速度更快 
     * 在url之后添加rewriteBatchedStatements=true 开启批出操作
     */
    @Test
    public void DoMore() throws Exception{
        /*
         * 依然是四大对象 获取连接
         */
        Connection connection =jdbcUtils.getConnection();
        
        String sql="insert into test values(?,?,?,?)";
        
        PreparedStatement preparedStatement=connection.prepareStatement(sql);
        
        for (int i = 1; i < 20002; i++) {
            preparedStatement.setInt(1, i);
            preparedStatement.setString(2, "o153014841"+i);
            preparedStatement.setInt(3, i);
            preparedStatement.setString(4, i%2==0? "":"");
            
            preparedStatement.addBatch();
        }
        long start=System.currentTimeMillis();
        preparedStatement.executeBatch();
        long end=System.currentTimeMillis();
        System.out.println(end-start);
    }
}
复制代码

测试结果为

由于在测试时原本只想测试2000个数据 但是一不小心测试为2万条数据 造成时间比较长 这是测试的疏忽,

然后测试使用的jdbcUtils只是获取connection连接 不具备其他功能 然后测试可以使用批出指令的时间为

前后结果相差巨大 批处理速度快很多

 

posted @   coder-zhou  阅读(2088)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示