批处理
当需要执行的sq|语句比较多时,每次发送一条SQL语句并执行的效率比较低 ,此时可以批量处理执行SQL
步骤:
1.在url中添加rewriteBatchedStatements=true参数,启用批处理
2.调用addBatch()方法,添加批处理
3.调用executeBatch()方法,执行批处理
conn = JdbcUtil. getConnection();
conn. setAutoCommit(false);//关闭自动提交事务
ps = conn. prepareStatement("insert into asd_ user values (null,?,?,?)");
for(inti=0;i<500000;i++){//50万条
ps. setString(1, "name" + i);
ps. setString(2, "123");
ps. setInt(3, 18);
ps . addBatch(); //添加批处理,放到缓冲区中
//设置批处理大小
if(i%10000==0){
ps . executeBatch(); //执行批处理
conn. commit();
}
}
ps. executeBatch();
conn. commit() ;
事务和批处理的区别:
●事务
1.底层是在数据库方存储SQL ,没有提交事务的数据放在数据库的临时表空间
2.最次把临时表空间中的数据提交到数据库服务器执行
3.消耗的是数据库服务器内存
●批处理
1.底层是在客户端存储SQL
2.最后一次把客户端存储的数据发送到数据库服务器执行
3.消耗的是客户端的内存