发表于: 2018-10-13 22:54:12
1 607
今天完成的事情:
今天主要学习了一下jdbc的批量操作
1、批量操作优势
在对数据库进行批量操作时,应分析操作的前后相关性,如果属于大批量的操作,而且前续操作的结果不依赖与后继操作,则完全可以使用批处理来操作DB。
使用批处理的优点:
1. 多个SQL语句的执行,共用一个Connection资源。在对数据库操作时,connection资源是很宝贵的,数据库的维护从某种角度来说,就是减少数据库的连接数,减轻对DB的压力。创建一个数据连接要远远比使用数据库连接消耗资源。这也正是数据库连接池存在的意义。
2. 批处理在效率上总是比逐条处理有优势,要处理的数据的记录条数越大,批处理的优势越明显。在处理大批量相同业务逻辑的DB操作可以使用批处理达到简化、高效处理。
2.PreparedStatement中使用批量更新时,要先设置好参数后再使用addBatch()方法加入缓存。批量更新中只能使用更改、删除或插入语句。
操作步骤为
1.建立操作类
2.初始化驱动
3.连接数据库
4.准备插入数据批量操作
5.数据库里插入100万条数据
6.数据库里插入3000万条数据
下面介绍一下rewriteBatchedStatements
1.MySql的JDBC连接的url中要加rewriteBatchedStatements参数,并保证5.1.13以上版本的驱动,才能实现高性能的批量插入。
MySQL Jdbc驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,直接造成较低的性能。只有把rewriteBatchedStatements参数置为true, 驱动才会帮你批量执行SQL
2.connsetAutoCommit(false)作用
conn.setAutoCommit(false);
conn.setAutoCommit()的功能是每执行一条SQL语句,就作为一次事务提交。但一般在项目中很有可能需要执行多条SQL语句作为一个事务。若有一个执行不成功,就会回滚
明天计划的事情:
明天还是要深入了解一下,并且在有无索引下做对比
遇到的问题:
主要是没人不了解,写代码时会多一个或者少一个东西
收获:
在jdbc进行批量插入数据
评论