发表于: 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进行批量插入数据


返回列表 返回列表
评论

    分享到