目录
批处理
方法:
未使用批处理:
使用批处理:
批处理
①.当需要成批执行 dml 语句时
②.JDBC 连接mysql 时,如果要使用批处理,需要在 url 中加参数
?rewriteBatchedStatements=true
③.批处理往往和 PreparedStatement 一起使用,可以减少编译次数和允许次数,可以提高效率
④.批处理创建了一个 ArrayList(object 类型的 element),按照1.5被扩容
方法:Class.forName("com.mysql.cj.jdbc.Driver");// 自动注册驱动 String url = "jdbc:mysql:/aaa"; Connection c = DriverManager.getConnection(url, "root", "666"); String sql = ("insert into bb values(?)"); PreparedStatement p = c.prepareStatement(sql); long l1 = System.currentTimeMillis(); for (int i = 0; i < 1000; i++) { p.setInt(1, i); p.executeUpdate(); } long l2 = System.currentTimeMillis(); System.out.println(l2 - l1); p.close(); c.close();
输出:
使用批处理:
Class.forName("com.mysql.cj.jdbc.Driver");// 自动注册驱动 String url = "jdbc:mysql:/aaa?rewriteBatchedStatements=true"; Connection c = DriverManager.getConnection(url, "root", "666"); String sql = ("insert into bb values(?)"); PreparedStatement p = c.prepareStatement(sql); long l1 = System.currentTimeMillis(); for (int i = 0; i < 1000; i++) { p.setInt(1, i); p.addBatch(); if ((i + 1) % 200 == 0) { p.executeBatch(); p.clearBatch(); } } long l2 = System.currentTimeMillis(); System.out.println(l2 - l1); p.close(); c.close();
时间:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)