`
greemranqq
  • 浏览: 976952 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

jdbc 大数据量下载

阅读更多

1.背景:

          常见数据应用里面会有数据下载功能,当数据量比较大的时候,用JDBC 不对参数处理,容易OOM

 

2.原因:

          基本的Connetion 做查询,ResultSet 会将数据全部拉到内存再进行遍历,所以容易OOM

 

3.当我们查询的时候利用

   

PreparedStatement ps = connection.prepareStatement(sqlText,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

// 拉到多少就行处理
ps.setFetchSize(1);

// ResultSet.TYPE_FORWARD_ONLY,1003 1004 1005 
// TYPE_FORWARD_ONLY一般是默认,不同数据库有差异。具体解释自己网上看

// 用的pg数数据库,关闭自动提交才会生效
 connection.setAutoCommit(false);

 

 

4.关于配合spring+ibatis:

          

// SqlSessionFactory 里面有 
SqlSession openSession(boolean autoCommit);

// 实际实现:
// SpringManagedTransactionFactory 
 @Override
  public Transaction newTransaction(DataSource dataSource, 
  TransactionIsolationLevel level, boolean autoCommit) {
    return new SpringManagedTransaction(dataSource);
  }

// 发现并没有使用到autoCommit
// 因此手动设置了才生效,这里其实不太明白,为啥这里只用2个参数
// ibatis 版本,1.3.2  spring-cloud 2.0 
SqlSession sqlSession = sqlSessionFactory.openSession()
sqlSession.getConnection().setAutoCommit(false);

 

 

 

5.不同的数据库、版本之间有差异,要再看看,多测试一下

 

 

6. 小结:

      1. 历史经验不一定可靠,得自己测试才知道

      2.仅仅简单记录一下,有问题可以留言指出

分享到:
评论

相关推荐

    sybase 数据库 jdbc 驱动下载

    Sybase 数据库是一款高效的企业级关系型数据库管理系统,广泛应用于金融、电信等关键领域。...正确理解和使用JDBC驱动是Java数据库编程中的重要一环,对于处理大量数据和构建高性能的Java应用程序至关重要。

    sqlite-jdbc-3.8.7.jar下载

    6. **性能优化**:虽然SQLite是轻量级数据库,但在处理大量数据时,仍然需要注意性能优化。例如,使用预编译的`PreparedStatement`代替`Statement`以减少解析SQL的时间,或者合理设计索引来加速查询。 7. **版本...

    JDBC数据同步

    - **性能优化**:大量数据同步时,批量操作比单条插入更快,避免频繁的数据库交互。 - **并发控制**:如果多线程环境下同步,需考虑并发控制,防止数据冲突。 ### 文件`transData`的关联 `transData`可能是一个...

    Hive-jdbc-3.1.1.zip

    这些改进使得Hive JDBC在处理大量数据时更加高效。 7. **错误处理和调试**:Hive JDBC提供了详细的错误信息和日志记录,帮助开发者诊断和解决连接、查询或数据加载等问题。 8. **API文档**:Hive-jdbc-3.1.1.zip...

    多线程以JDBC的方式返回海量数据

    然而,当数据量非常大时,一次性加载所有数据可能会导致内存溢出,降低应用程序性能。 为了解决这个问题,我们可以采用多线程技术。多线程允许程序同时执行多个任务,提高资源利用率和程序响应速度。在处理海量数据...

    jdbc数据集生成器

    总的来说,jdbc数据集生成器是一个提升开发效率的实用工具,它简化了数据查看和分享的过程,特别是在处理大量数据库查询结果时。通过理解和利用这样的工具,开发者可以更好地管理和操作数据库,提高工作效率。

    jdbc-批量插入数据

    本文将深入探讨如何使用JDBC进行批量插入数据,这在处理大量数据时能显著提高性能。 批量插入数据是数据库操作中常见的一种优化策略,特别是在数据分析、数据迁移或大数据处理等场景。传统的单条插入方式可能会导致...

    软件测试中使用JDBC插入大量数据的性能测试

    jdbc数据软件测试中使用JDBC插入大量数据的性能测试使用jdbc向数据库插入100000条记录,分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试:1、使用statement插入100000条记录...

    JDBC教程

    JDBC与数据库的元数据 通过Connection对象的`getMetaData()`方法可以获得关于数据库的信息,如表结构、列信息等,这对于数据库迁移或自动化工具非常有用。 ### 8. 避免SQL注入 PreparedStatement的参数化特性可...

    spring_JDBC整合包

    在处理大量数据时,还可以通过分页查询来优化性能。在分布式环境下,Spring JDBC配合Spring的事务管理功能,可以实现跨数据库操作的事务一致性。 这个"spring_JDBC基本包"可能包含的文件有Spring框架的基础库,如...

    Sharding JDBC 实现数据分片 - 技术分享.pdf

    随着业务的发展,数据量会越来越大,单一数据库会面临性能瓶颈和维护困难的问题。为了解决这些问题,ShardingJDBC提供了一种在应用层实现数据库分片的解决方案,从而将数据分散存储在多个数据库中。 ShardingJDBC的...

    达梦数据量驱动jar包(16版本),DM7jdbcDriver16驱动

    达梦数据量驱动jar包(16版本),DM7jdbcDriver16驱动,不同版本有比同配置, 大小写不敏感: 表对象小写:如果想要迁移过来表对象仍然保持小写,需要勾选“保持对象名大小写”,后期查询时,不需要使用双引号查询 表...

    jdbc jar包

    - 使用合适的fetchSize,避免一次性加载大量数据导致内存溢出。 - 适当设置连接、读取超时,防止程序无响应。 总结,JDBC Jar包是Java开发与数据库交互的基础,通过其提供的API,我们可以轻松地实现对各种数据库的...

    elasticsearch-jdbc 同步工具下载及配置说明

    - 性能优化:根据数据量和系统资源调整批处理大小和调度间隔。 通过正确配置和使用Elasticsearch-JDBC,你可以方便地将关系型数据库中的数据整合到Elasticsearch中,充分利用其搜索和分析能力。同时,也要注意监控...

    JDBC数据源连接池的配置和使用示例

    **JDBC数据源连接池配置与使用详解** 在Java Web应用中,数据库连接的管理是至关重要的。为了提高性能和资源利用率,开发人员通常会使用数据源连接池。本篇文章将详细讲解JDBC数据源连接池的配置和使用,以帮助你更...

    spring-jdbc jar包.rar

    - **代码简洁性**:通过模板类和回调接口,Spring JDBC减少了大量重复的样板代码,使得数据库操作代码更加简洁明了。 - **事务管理**:集成Spring的事务管理,可以方便地实现事务的传播行为和回滚策略,提升代码的可...

    greenplum_jdbc_5.1.4.zip

    - 注意处理大结果集时的内存管理,避免一次性加载大量数据导致内存溢出。 - 使用JDBC的批处理功能提高批量操作的效率。 6. **常见问题及解决方案** - 连接超时:检查网络状况,或者调整数据库的连接超时设置。 ...

    oracle jdbc jar包

    它直接通过网络协议与数据库服务器通信,适用于分布式环境,具有轻量级、跨平台的特点。 2. OCI驱动(Oracle Call Interface Driver): OCI驱动依赖于本地Oracle客户端库,提供了对所有Oracle数据库特性的全面...

    Access_JDBC30.jar

    这对于大数据量处理或复杂业务逻辑来说,显然是不够的。"Access_JDBC30.jar"通过其内部优化机制,打破了这些限制,允许开发者进行更频繁、更大规模的数据操作,提升了开发效率和应用性能。 2. **修复执行方法异常**...

    jdbc批量插入大字段

    在Oracle数据库中,Blob类型用于存储大量的二进制数据...总之,批量插入大字段是处理大量Blob数据的关键策略,通过JDBC提供的批处理功能,结合合理的事务管理和内存管理,可以显著提升Oracle数据库中的大数据插入效率。

Global site tag (gtag.js) - Google Analytics