数据库批处理

数据库批处理

批处理(batch)指的是一次操作中执行多条SQL语句,批处理相比于一次一次执行效率会提高很多。

批处理操作数据库的过程主要是分两步:

  • 将要执行的SQL语句保存
  • 执行保存的SQL语句

如何实现批处理
Statement和PreparedStatement都支持批处理操作,这里我们只说明PreparedStatement的批处理方式:

  • void addBatch()
    将要执行的SQL先保存起来,先不执行
    这个方法需要在在设置完所有的占位符之后调用

  • int[] executeBatch()
    这个方法用来执行SQL语句,这个方法会将批处理中所有SQL语句执行

  • mysql默认批处理是关闭的,所以还需要去打开mysql的批处理:
    需要在mysql的url地址中加入一下参数:
    rewriteBatchedStatements=true
    例如:URL = “jdbc:mysql://127.0.0.1:3306/test?rewriteBatchedStatements=true”;

Demo
1.创建一张新的数据表

//向test表中插入10000条数据
@Test//测试批处理
public void testBatch(){
      //向test表中插入10000条数据
      Connection connection = null;
      PreparedStatement ps = null;
      try {
           /*
        *获取数据库连接  数据库链接操作在此不进行赘述
        *原生数据库操作可参考:http://www.cnblogs.com/Mr-Dawei/p/7455324.html
         */
           connection=XXXX;
           //sql语句编写
           String sql = "INSERT INTO test(uname) VALUES(?)";
           //获取PrepareStatement
           ps = connection.prepareStatement(sql);
           //创建一个for循环,来设置占位符参数数
           for(int i = 0; i < 10000 ;i++){
                   ps.setString(1,"test"+i);
                   //添加到批处理方法中,调用无参的,有参的是Statement来调用的!
                   ps.addBatch();
           }
           //获取一个时间戳 可以测试执行效率
           long start = System.currentTimeMillis();
           //统一执行执行批处理
           ps.executeBatch();
           //获取一个时间戳
           long end = System.currentTimeMillis();
           System.out.println("共花费了:"+(end-start));
           } catch (SQLException e) {
                e.printStackTrace();
           } finally{
                   //逆序关闭资源
           }
    }

参考文章:
https://www.cnblogs.com/Mr-Dawei/p/7455496.html

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值