什么是批处理?
当需要向数据库中插入大批量数据时,在批处理之前,要执行100条sql,就只需100此打开连接关闭连接和网络传输。
批处理过程:将大量的SQL打包成一个批次,发送给服务器,服务器接收数据,打开批,一次执行批里的sql,这样减少与数据库的交互,提高程序的效率。
- 如何实现批处理?
实现方式一:Statement对象实现
需求:利用statement开发,插入dept表,100条
实现方式二:Preparedstatement对象实现
需求:利用preparedstatement对象,向dept表中插入100条数据
开发步骤:
1.获取数据库连接
2.获取传输器
3.执行SQL(批处理,打成一个批次,统一发给服务器)
4.解析结果集
5.关闭资源
注意:每次利用批处理完成插入100条数据,打一个批次是,要统一发送数据
事务优化
需求:让批处理程序快一点
设置事务的开关:conn.setAutoCommit(false);
手动提交事务:conn.commit();
两种方式的区别:
Statement
- 优点:在一次批处理中,SQL更加灵活
- 缺点:发生SQL注入,效率低,拼接参数麻烦
preparedstatement
* 优点:防止SQL注入,提高执行效率(骨架缓存),占位符拼接参数
* 缺点:在一次批处理中,只可以完成骨架相同的SQL
总结:
** 在没使用批处理时,插入100条SQL的话,需要打开100次数据库连接并且需要100次网络传输。
** 使用了批处理,效率不一定就高,跟数据库的版本,驱动的版本,硬件配置,网络速度都有关系
** 使用jdbc批处理时建议结合着事务优化一起做
** 注意:不建议一次性向批中插入大量数据,会造成OutofMemory