`

JDBC操作数据库性能优化小结

 
阅读更多

最近做了一个使用JDBC操作数据库的小项目,主要实现不同数据库的数据表之间数据复制功能.以下是一些关于性能方面的总结:

 

1. 进行SQL查询,当预期的结果集较大的时候,使用PreparedStatement.setFetchSize(FETCH_SIZE)或者Statement.setFetchSize(FETCH_SIZE),可以成百倍地增加性能,我自己设置的值是525

2. 当ResultSet很大的时候,而我们需要读取保存ResultSet里面的数据的时候,起初将所有的数据保存在List或者HashMap里,在进行多线程运行的时候,导致了Java heap space out of memory. 最终将数据逐行写入到CSV文件中,避免了性能问题

3. 在进行大量数据插入数据库的操作时,应该使用批量加入,一次执行的策略,代码如下:

Connection destCon = DBHelper.getDestDBCon();
destCon.setAutoCommit(false);
PreparedStatement pstmt = destCon.prepareStatement(insertSql.toString());
while ((line = br.readLine())!= null) {
				count ++;
				items = line.split(",");
				pstmt.setString(1. items[0]);
                                pstmt.setBigDecimal(2, new BigDecimal(items[1]))
				}
				pstmt.addBatch();
				if (count%BATCH_SIZE == 0 || count == insert_size){
					pstmt.executeBatch();
					destCon.commit();
					destCon.setAutoCommit(false);		
			    }
			}

 并且一次性批量提交的数目是有限制的,还需要分批提交. 这样做就能大幅度提高插入的速度.

实测30万条数据插入只需要14秒

在进行以上优化以后,在使用多线程的情况下,每个线程操作几十万条数据进行读取,存储,插入,不存在性能问题

 

本文出自"lijingshou"博客,转载请务必保留此出处http://lijingshou.iteye.com/blog/2076882

1
1
分享到:
评论
1 楼 LinApex 2014-06-07  
哟西,这个是个好东西

相关推荐

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    第15章 RAC稳定性与性能优化 15.1服务器硬件 15.1.1 Firmware固件升级 15.1.2硬件设备兼容性 15.1.3 FC HBA卡冗余 15.1.4 Infiniband技术 15.1.5 RAC硬件结构案例 15.2操作系统 15.2.1认证操作系统 15.2.2...

    Java数据编程指南

    SQLJ 简介 什么是SQLJ 准备开始 使用SQLJ SQLJ定制 小结 第9章 数据库性能问题 本地编译机制 挑选适当的JDBC驱动程序 连接池 事务和批量查询 存储过程和JDBC准备语句 JDBC...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2 使用配置文件指定的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2 使用配置文件指定的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2 使用配置文件指定的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2 使用配置文件指定的...

    Hibernate实战(第2版 中文高清版)

     1.5 小结   第2章 启动项目   2.1 启动Hibernate项目   2.1.1 选择开发过程   2.1.2 建立项目   2.1.3 Hibernate配置和启动   2.1.4 运行和测试应用程序   2.2 启动Java Persistence项目   2.2.1 ...

    Java Web程序设计教程

    第10章hibernate性能优化 208 10.1hibernate事务与并发 208 10.1.1什么是事务 208 10.1.2hibernate中的事务处理 209 10.1.3在hibernate中使用jta事务 210 10.1.4并发控制 211 10.2hibernate缓存 213 10.2.1...

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

    第5章 hibernate 3持久化技术实践与性能优化 271 5.1 操作持久化对象的常用方法介绍 271 5.1.1 使用session的begintransaction()方法 272 5.1.2 使用session的close()方法 273 5.1.3 使用session的connection()...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    1.10 小结 24 第2章 SQL执行 25 2.1 Oracle架构基础 25 2.2 SGA-共享池 27 2.3 库高速缓存 28 2.4 完全相同的语句 29 2.5 SGA-缓冲区缓存 32 2.6 查询转换 35 2.7 视图合并 36 2.8 子查询解嵌套 39 2.9 ...

    Oracle_Database_11g完全参考手册.part3/3

    通过学习《Oracle Database 11g完全参考手册》,您可以了解如何实现最新的安全措施,如何调优数据库的性能,如何部署网格计算技术。附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 ...

    Oracle_Database_11g完全参考手册.part2/3

    通过学习《Oracle Database 11g完全参考手册》,您可以了解如何实现最新的安全措施,如何调优数据库的性能,如何部署网格计算技术。附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 ...

Global site tag (gtag.js) - Google Analytics