`
giraffeql
  • 浏览: 16745 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jdbc 批量插入优化

阅读更多

项目中有一个大数据插入的功能是通过jdbc的批处理实现的,但效率一直不理想。

最近研究了一下,做如下总结:

1) 如果id使用的是uuid,一定要保证有序。

因为通常数据库会为主键创建聚集索引。而聚集索引是用来指明数据排序规则的。所以,对于非有序的id,插入的同时会做大量的排序操作,很影响效率。

另外,我们在尝试的过程中有使用apache axis.jar 下的SimpleUUIDGen生成有序id,但该生成操作特别耗时,不推荐使用。

最后我们采取的是最简单粗暴的方法。自己写生成uuid的方法。

return new StringBuilder().append("z").append(System .currentTimeMillis()).append("-").append(System .nanoTime()).toString();

2) Open DeclarationPreparedStatement 执行executeBatch()后,记得clearBatch()

pstmt.executeBatch();
pstmt.clearBatch();

3) 对表索引进行优化

再插入的过程中,数据库会自动维护索引,会消耗一定性能。索引是一把双刃剑,请合理使用。

 

简要记录3点,希望对后来者有帮助。

 

 

 

 

0
2
分享到:
评论
2 楼 giraffeql 2014-04-03  
finallygo 写道
这样不能保证id唯一吧

嗯,这看你的项目了,如果有大量并发,会有这个问题。
如果并发访问并不多,不容易出现重复问题,毕竟是纳秒(或微秒)级别的。
1 楼 finallygo 2014-03-28  
这样不能保证id唯一吧

相关推荐

    Java-JDBC【源码】批量插入操作、优化取消自动提交(提速40+倍)

    文章地址:...Java-JDBC【之】批量插入操作、优化取消自动提交(提速40+倍) 1.JDBC批量操作 2.两种实现方式 3.优化,取消自动提交 4.完整源码 《目录:Java-JDBC学习(编写中...)》 《幕》

    MSSQL批量插入数据优化详细

    主要为大家分享一下批量插入数据的方法,有时候我们需要插入大量的数据那么就需要优惠了,要不根本受不了

    sb-jpa-batch-insert-demo

    在Spring Data JPA应用程序中批量插入示例 所有你需要的是: 将选项spring.jpa.properties.hibernate.jdbc.batch_size设置为所需的值。 将您的saveAll()方法与准备插入的实体列表一起使用。 运行此应用程序,然后...

    MySQL大量数据插入各种方法性能分析与比较

    不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的...  如果我们每插入一条都执行一个SQL语句,那么我们需要执行除了连接和关闭之外的所有步骤N次,这样是非常耗时的,优化的方式有一下

    neo4j学习资料汇总(各种优质博文和neo4j教程整理)

    │ 关于Neo4j和Cypher批量更新和批量插入优化的5个建议 - 逆水行舟 - CSDN博.html │ 图数据库-Neo4j介绍与Cypher入门.html │ 图数据库之Cypher语言 - 活的洒脱怪我咯的专栏 - CSDN博客.html │ 图数据库之...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题75:批量插入几百万条数据 Java面试题76:有没有使用过redis Java面试题77:redis的使用场景 Java面试题78:redis存储对象的方式 Java面试题79:redis数据淘汰机制 Java面试题80:java访问redis级redis...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题75:批量插入几百万条数据.mp4 │ Java面试题76:有没有使用过redis.mp4 │ Java面试题77:redis的使用场景.mp4 │ Java面试题78:redis存储对象的方式.mp4 │ Java面试题79:redis数据淘汰机制.mp4 │...

    低清版 大型门户网站是这样炼成的.pdf

    5.6.1 批量插入 322 5.6.2 批量更新 323 5.6.3 批量删除 324 5.7 hibernate的事务管理 325 5.7.1 事务边界声明 325 5.7.2 并发控制 326 5.7.3 悲观锁 327 5.7.4 乐观锁 328 5.8 hibernate的缓存机制 332 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例143 使用线程池优化多线程编程 186 实例144 Object类中线程相关的方法 187 实例145 哲学家就餐问题 189 实例146 使用信号量实现线程同步 190 实例147 使用原子变量实现线程同步 191 实例148 使用事件分配线程...

    MySQL5 权威指南第3版中文版_part1

     22.11 mysqlimport程序(文本导入、批量导入)  22.12 mysqlshow程序(查看信息)  22.13 myisamchk程序(修复MyISAM文件)  22.14 myisampack程序(压缩MyISAM文件)  第23章 MySQL API应用指南  23.1 ...

    MySQL 5权威指南(第3版) 中文版 下载地址

     22.11 mysqlimport程序(文本导入、批量导入)  22.12 mysqlshow程序(查看信息)  22.13 myisamchk程序(修复MyISAM文件)  22.14 myisampack程序(压缩MyISAM文件)  第23章 MySQL API应用指南  23.1 ...

    DataX Web分布式数据同步工具-其他

    21、jdbc添加hive数据源支持,可在构建JSON页面选择数据源生成column信息并简化配置; 22、优先通过环境变量获取DataX文件目录,集群部署时不用指定JSON及日志目录; 23、通过动态参数配置指定hive分区,也可以配合...

Global site tag (gtag.js) - Google Analytics