
目录
批处理
方法:
未使用批处理:
使用批处理:
批处理
①.当需要成批执行 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条)