发表于: 2018-04-07 21:43:33

1 798


今天完成的事情

1.回头熟悉了下JDBC,因为mybatisjabctemplate都是加载了jdbc使用JDBC来连接数据库

2.数据库插入百万条数据目前直接用JDBC写了个测试插入的

最开始直接使用循环100W次的方法插入耗时很久估算下来要5个小时左右

因为100W数据的插入没有执行完所以这一放一个执行1W的图

考虑到JDBC事务的概念使用事务的方法加入效率大幅度提高

从网上看到还有addBatch()批量处理这个方法目前在不加事务的情况下效率没得到提升不知道是不是我代码写的有问题同样时1W的图

使用事务+批量的方法效率得到提升但目前我还没搞清到底跟批量有没有关系因为耗时跟我用事务的时候耗时差不多

 然后考虑分批处理能不能再次提高效率,今天只跑了1次,没有代表性

明天的计划的事情

1.把插入数据库这边搞完(因为是直接jdbc单跑,还去掉了util工具类,要想想怎么在mybatis这种环境里跑起来,索引也还没做)

2.直接执行Main方法去在服务器上跑通流程

遇到的问题

1.在不加事务时使用addBatch(),executeBatch(),并没有提高插入效率可是按我从网上查到的结果来看应该时可以提高的

收获

1.原来真的没关注到JDBC还有一个专门用于大批量插入的批量操作addBatch()

statement接口的addBatchPreparedStatement接口的addBatch不同的

statement:

void     addBatch(String sql)

将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中通过调用方法 executeBatch 可以批量执行此列表中的命令

int[]     executeBatch()

将一批命令提交给数据库来执行如果全部命令执行成功则返回更新计数组成的数组

PreparedStatement接口里重写了addBatch()的方法,executeBatch()并没有重写

void     addBatch()  <注意:PreparedStatementaddBatch( )没有参数的>

2.addBatch()pstmt.executeUpdate()

addBatch()把若干sql语句装载到一起然后一次送到数据库执行执行需要很短的时间

pstmt.executeUpdate() 是一条一条发往数据库执行的 时间都消耗在数据库连接的传输上面

就相当于我们平时吃橘子的时候,executeUpdate()时一瓣一瓣的吃,addBatch()时直接一口都塞嘴里吃了



返回列表 返回列表
评论

    分享到