`
giraffeql
  • 浏览: 17810 次
  • 性别: 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唯一吧

相关推荐

    Mybatis与JDBC批量插入MySQL数据库性能测试

    总的来说,理解和掌握批量插入技术,无论是使用JDBC还是Mybatis,都能帮助我们优化数据库操作,提升系统性能。对于大型项目,合理利用批量插入策略,结合数据库的性能调优,可以显著提高服务响应速度和用户体验。

    jdbc批量插入大字段

    因此,"jdbc批量插入大字段"这个话题旨在探讨如何高效地通过Java JDBC来实现Blob字段的批量插入,以提高性能。 首先,我们需要了解JDBC(Java Database Connectivity),它是Java编程语言与各种数据库之间通信的...

    jdbc-批量插入数据

    对于大型数据集,可能需要考虑使用数据库特定的批量插入优化,例如MySQL的LOAD DATA INFILE命令,或者通过BULK INSERT在SQL Server中进行批量导入。这些方法通常比JDBC的批量处理更快,但不适用于所有情况。 在实际...

    java实现jdbc批量插入数据

    本篇文章将详细介绍如何使用Java实现JDBC批量插入数据,并比较三种常见的JDBC批量插入编程方法。 **方法一:使用PreparedStatement加批量的方法** PreparedStatement是Statement的子接口,允许预编译SQL语句,这...

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

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

    Java实现mybatis批量插入数据到Oracle

    本篇文章将详细介绍如何利用Java和MyBatis实现批量插入数据到Oracle数据库中。 首先,我们需要理解Oracle数据库的一些基本概念。Oracle是世界上最流行的商业关系型数据库管理系统之一,以其强大的功能和高可靠性而...

    mybatis的oracle的批量插入优化和mybatis的generator自动生成三层文件

    本文将详细探讨如何在Oracle数据库中进行批量插入优化,并介绍MyBatis Generator这一自动化代码生成工具,以提高开发效率。 首先,让我们深入理解Oracle数据库中的批量插入。批量插入可以显著提升性能,尤其是在...

    jdbc批量 (绝对经典)

    ### JDBC批量操作详解:效率与性能的提升策略 在数据库操作中,批量处理是一种常见的优化技术,用于提高数据处理的效率和性能。JDBC(Java Database Connectivity)作为Java应用程序与数据库交互的标准API,提供了...

    Mybatis 3+Mysql 实现批量插入

    本文将深入探讨如何利用MyBatis框架结合MySQL数据库实现批量插入功能,包括其原理、配置、代码实现以及优化策略。 ### 一、MyBatis框架简介 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级...

    批量插入大量数据

    在实际操作中,你可能需要结合具体的技术栈,例如Python的pandas库配合SQLAlchemy,Java的JDBC,或者是Node.js的Sequelize等,使用它们提供的批量插入接口。同时,要关注数据库类型,如MySQL、PostgreSQL、Oracle或...

    MSSQL批量插入数据优化详细

    在SQL Server中,批量插入数据是一项重要的性能优化技术,尤其当需要处理大量数据时。本文将探讨如何在MSSQL中高效地批量插入数据,并针对给出的代码示例进行分析和优化。 首先,我们来看一个常见的批量插入方法,...

    oracle数据库中批量插入问题

    2. **使用PL/SQL或外部编程语言(如C#、Java等)**:通过编程接口(如ODBC、JDBC、Oracle Data Provider for .NET等)进行批量插入操作。这种方式更灵活,可以适应更复杂的数据处理需求。 ### C#代码示例解析 提供...

    SpringBoot整合Mybatis连接SQL Server 跨库批量插入

    本篇将深入探讨如何在Spring Boot项目中整合Mybatis,实现对SQL Server数据库的跨库批量插入操作。 首先,我们需要在Spring Boot项目中引入相关的依赖。对于Mybatis的支持,我们需要添加Mybatis和其Spring Boot ...

    ibatis的批量插入DAO实例

    本篇将深入探讨如何在Ibatis中实现批量插入数据的DAO(Data Access Object)实例,以及相关的源码分析。 首先,Ibatis允许我们通过SQL映射文件来定义SQL语句,这种方式比传统的JDBC更加灵活且易于维护。批量插入...

    SpringJDBC批量处理数据代码示例

    在Java开发中,Spring JDBC是Spring...总的来说,Spring JDBC提供了强大的批量处理能力,通过`NamedParameterJdbcTemplate`的`batchUpdate`方法,我们可以轻松地实现数据的批量插入和更新,有效提升数据库操作的效率。

    批量插入的simple

    在IT行业中,批量插入(Bulk Insert)是一种优化数据库性能的技术,尤其在处理大量数据时非常有用。本篇文章将深入探讨批量插入的概念、实现方式以及它在实际应用中的优势。 批量插入允许开发者一次性提交多条记录...

    JDBC性能优化.pdf

    - **背景**:对于批量数据插入、更新或删除操作,逐条执行效率低下。 - **建议**:利用`addBatch()`和`executeBatch()`方法进行批量处理。 - **示例**:创建一个`PreparedStatement`对象,并添加多个操作到批处理...

    Spring JdbcDaoSupport 批量插入数据

    批量插入数据在处理大量数据时能显著提升性能,因为数据库通常会对批量操作进行优化。在`JdbcDaoSupport`中,我们可以通过`JdbcTemplate`的`batchUpdate(String sql, BatchPreparedStatementSetter setter)`方法来...

    Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    本文将详细讲解如何使用JDBC批量插入10万条数据,并探讨其背后的原理和优化策略。 批量处理在JDBC中主要通过Statement对象的`addBatch()`和`executeBatch()`两个方法实现。在示例代码中,我们创建了一个`...

    kettle批量插入hive2,解决表输出速度慢问题

    ### Kettle 批量插入Hive2:解决表输出速度慢问题 #### 一、问题背景及原因分析 在使用Kettle进行数据处理时,尤其是将数据从源系统传输到目标系统的过程中,如果目标系统是Hive2,则可能会遇到表输出速度极其缓慢...

Global site tag (gtag.js) - Google Analytics