随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
posts - 398,comments - 0,views - 13万

简介:

当向MySQL数据库中添加数据的时候一般都是一个一个地设置参数然后执行添加操作,这样在处理大量数据的时候会严重影响程序性能,所以就要使用批处理(一批一批地添加)

批处理的原理其实就是将设置的参数放进集合,然后再一起传入SQL中。

代码测试:

先创建一个表account:

复制代码
package jdbcDemo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import org.junit.jupiter.api.Test;
import JDBC.JdbcUtils;

public class Demo2 {
    /**
     * 进行批处理
     * @throws Exception 
     */
    @Test
    public void fun1() throws Exception {
        /**
         * pstmt:
         *     添加参数到批中
         *     执行批
         */
        // 连接SQL对象
        Connection conn = JdbcUtils.getConnection();
        // SQL模板
        String sql = "INSERT INTO account VALUES(?,?,?)";
        // pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        
        
        // 大量地添加参数
        for(int i = 1;i < 10000; i++ ) {
            pstmt.setInt(1, i);
            pstmt.setString(2, "emp_" + i);
            pstmt.setDouble(3, (Math.log(i)+1.0));
            
            // 添加批,这一组参数会保存到集合中
            pstmt.addBatch();
        }
        long start = System.currentTimeMillis();    // 得到当前时间的毫秒值
        pstmt.executeBatch();    // 执行批!
        long end = System.currentTimeMillis();    // 得到当前时间的毫秒值
        System.out.println("用时: " + ((end - start  - (end - start)%100.0)/1000.0) + " s   " + (end - start) + " ms");
    }
}
复制代码

此时数据库的url为:

url = jdbc:mysql://localhost:3306/db1

执行程序查看用时:

将数据库的url修改为批处理支持:

url = jdbc:mysql://localhost:3306/db1?rewriteBatchedStatements=true

先删除掉表中的原有数据,然后再次执行:

能够很明显地发现时间极大地减少了。

 

posted on   时间完全不够用啊  阅读(205)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示