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驱动是Java数据库编程中的重要一环,对于处理大量数据和构建高性能的Java应用程序至关重要。
6. **性能优化**:虽然SQLite是轻量级数据库,但在处理大量数据时,仍然需要注意性能优化。例如,使用预编译的`PreparedStatement`代替`Statement`以减少解析SQL的时间,或者合理设计索引来加速查询。 7. **版本...
- **性能优化**:大量数据同步时,批量操作比单条插入更快,避免频繁的数据库交互。 - **并发控制**:如果多线程环境下同步,需考虑并发控制,防止数据冲突。 ### 文件`transData`的关联 `transData`可能是一个...
这些改进使得Hive JDBC在处理大量数据时更加高效。 7. **错误处理和调试**:Hive JDBC提供了详细的错误信息和日志记录,帮助开发者诊断和解决连接、查询或数据加载等问题。 8. **API文档**:Hive-jdbc-3.1.1.zip...
然而,当数据量非常大时,一次性加载所有数据可能会导致内存溢出,降低应用程序性能。 为了解决这个问题,我们可以采用多线程技术。多线程允许程序同时执行多个任务,提高资源利用率和程序响应速度。在处理海量数据...
总的来说,jdbc数据集生成器是一个提升开发效率的实用工具,它简化了数据查看和分享的过程,特别是在处理大量数据库查询结果时。通过理解和利用这样的工具,开发者可以更好地管理和操作数据库,提高工作效率。
本文将深入探讨如何使用JDBC进行批量插入数据,这在处理大量数据时能显著提高性能。 批量插入数据是数据库操作中常见的一种优化策略,特别是在数据分析、数据迁移或大数据处理等场景。传统的单条插入方式可能会导致...
jdbc数据软件测试中使用JDBC插入大量数据的性能测试使用jdbc向数据库插入100000条记录,分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试:1、使用statement插入100000条记录...
JDBC与数据库的元数据 通过Connection对象的`getMetaData()`方法可以获得关于数据库的信息,如表结构、列信息等,这对于数据库迁移或自动化工具非常有用。 ### 8. 避免SQL注入 PreparedStatement的参数化特性可...
在处理大量数据时,还可以通过分页查询来优化性能。在分布式环境下,Spring JDBC配合Spring的事务管理功能,可以实现跨数据库操作的事务一致性。 这个"spring_JDBC基本包"可能包含的文件有Spring框架的基础库,如...
随着业务的发展,数据量会越来越大,单一数据库会面临性能瓶颈和维护困难的问题。为了解决这些问题,ShardingJDBC提供了一种在应用层实现数据库分片的解决方案,从而将数据分散存储在多个数据库中。 ShardingJDBC的...
达梦数据量驱动jar包(16版本),DM7jdbcDriver16驱动,不同版本有比同配置, 大小写不敏感: 表对象小写:如果想要迁移过来表对象仍然保持小写,需要勾选“保持对象名大小写”,后期查询时,不需要使用双引号查询 表...
- 使用合适的fetchSize,避免一次性加载大量数据导致内存溢出。 - 适当设置连接、读取超时,防止程序无响应。 总结,JDBC Jar包是Java开发与数据库交互的基础,通过其提供的API,我们可以轻松地实现对各种数据库的...
- 性能优化:根据数据量和系统资源调整批处理大小和调度间隔。 通过正确配置和使用Elasticsearch-JDBC,你可以方便地将关系型数据库中的数据整合到Elasticsearch中,充分利用其搜索和分析能力。同时,也要注意监控...
**JDBC数据源连接池配置与使用详解** 在Java Web应用中,数据库连接的管理是至关重要的。为了提高性能和资源利用率,开发人员通常会使用数据源连接池。本篇文章将详细讲解JDBC数据源连接池的配置和使用,以帮助你更...
- **代码简洁性**:通过模板类和回调接口,Spring JDBC减少了大量重复的样板代码,使得数据库操作代码更加简洁明了。 - **事务管理**:集成Spring的事务管理,可以方便地实现事务的传播行为和回滚策略,提升代码的可...
- 注意处理大结果集时的内存管理,避免一次性加载大量数据导致内存溢出。 - 使用JDBC的批处理功能提高批量操作的效率。 6. **常见问题及解决方案** - 连接超时:检查网络状况,或者调整数据库的连接超时设置。 ...
它直接通过网络协议与数据库服务器通信,适用于分布式环境,具有轻量级、跨平台的特点。 2. OCI驱动(Oracle Call Interface Driver): OCI驱动依赖于本地Oracle客户端库,提供了对所有Oracle数据库特性的全面...
这对于大数据量处理或复杂业务逻辑来说,显然是不够的。"Access_JDBC30.jar"通过其内部优化机制,打破了这些限制,允许开发者进行更频繁、更大规模的数据操作,提升了开发效率和应用性能。 2. **修复执行方法异常**...
在Oracle数据库中,Blob类型用于存储大量的二进制数据...总之,批量插入大字段是处理大量Blob数据的关键策略,通过JDBC提供的批处理功能,结合合理的事务管理和内存管理,可以显著提升Oracle数据库中的大数据插入效率。