`

JDBC性能优化

阅读更多
jdbc程序的性能主要由两个因素决定,一是数据库本身的性质,另一个是与数据库相对独立的jdbc应用程序接口(api)的使用。这里说的是如何正确使用jdbc编程接口,以获得更好的性能。

jdbc主要优化有:

1.选择正确的jdbc驱动程序

2.Connention的优化:使用连接池来管理Connection对象
3.Statement的优化:使用批量更新等
4.Result的优化:正确的从数据库中get数据等

(1)选择正确的jdbc驱动程序:
1、jdbc-odbc 桥
2、本地api-部分 java驱动
3、jdbc网路协议-纯java驱动
4、jdbc本地协议

最好选择jdbc网路协议-纯java驱动,效率比较高,但需要第三方软件的支持。比如corba、 weblogic属于这种类型

(2)优化Connection对象:
1、设置适当的参数
DriverManager.getConnection(String url,Properties props);
例如:
Properties props=new Properties();
props.put("user","wuwei");
props.put("password","wuwei");
props.put("defaultRowPrefectch","30");
props.put("dufaultBatchValue","5");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@hostsString",props);
对象可以通过设置setDefaultRowPrefetch(int) 和 setDefaultBatchValue(int) 两个参数类优化连接

2、使用连接池
可以自己写一个连接池,这样程序的灵活性强,便于移植。
    apache项目开发了一套非常通用而表现非常稳定的对象池 http://jakarta.apache.org/commons/pool.htm
    设计了自己的连接池后,在客户端调用建立对象:
public Object makeObject() throws Exception{
  Class.forName("oracle.jdbc.driver.OracalDriver");
  return DriverManager.getConnection("url","username","password");
}
    销毁对象时用:
public void destroyObject(Object obj) throws Exception{
((Connection)obj.close());
}
注意几点:对象池里有没有回收机制,对象池里有机有容量限制,对象池里有多少个闲置对象(可以释放)

3、控制事务的提交
最好手动提交事务,不但可以可以保证数据原子性,而且对新能提高留下余地。
try{
  connection.setAutoCommint(false);
  // 代码用PreparedStatement性能比Statementh好
  connection.commit();
  connection.setAutoCommit(true);
}catch(SQLException e){
}finally{
   //代码
   if(connection!=null){
   connection.close();  
}
}

4、适当的选择事务的隔离级别
TRANSACTION_READ_UNCOMMITED 性能最高
TRANSACTION_READ_COMMITED   快
TRANSACTION_REFEATABLE_READ 中等
RANSACTION_SERIALIZABLE     慢

(3)Statement 优化:
jdbc3个接口用来处理sql的执行,是Statement PreparedStatement CallableStatement提供适当的Statement接口批量执行sql从数据库批量获取数据。
PreparedStatement 比Statement性能要好 主要体现在一个sql语句多次重复执行的情况。
PreparedStatemnt只编译解析一次而Statement每次编译一次。

批量修改数据库
Statement 提供方法addBatch(String)和executeBatch()
调用方法为
stmt.addBatch("isnert.....");
stmt.addBatch("update.....");
stmt.executeBatch();
也可以用PreparedStatement从而更好的提高性能:
pstmt=conn.preparedStatement("insert into test_table(......) values(....?)");
pstmt.setString(1,"aaa");
pstmt.addBatch();
pstmt.setString(1,"bbb");
pstmt.addBatch();
.....
pstmt.executeBatch();

批量地从数据库中取数据:
通过setFetchSize()和getFectchSize()方法来设定和查看这个参数,这个参数对体统的性能影响比较大。这个参数太小会严重地降低程序的性能。
Connection Statement ResultSet都有这个参数,他们对性能地影响顺序是:ResultSet---Statement---Connection

(4)优化ResultSet:
体现在以下几个方面:
批量读取数据.合理设置ResultSet的getFetchSize()和setFetchSize()方法中的参数
使用正确的get和set方法
使用整数而不是字段名作为参数性能比较高

例如:
setInt(1,100);
setString(2,"aaaa");

setInt("id","100");
setString("name","aaaa");
性能好
设置适当的滚动方向。有3个方向FETCH_FORWORD,FETCH_REVERSE FETCH_UNKNOWN,单向滚动性能比较高。

其他方面的性能优化
及时显示的关闭Connection Statement ResultSet,其中Connection可以用Connetion Pool处理。
使用数据库系统的强大查询功能去组织数据。这样程序运行是和数据库服务的交互次数少,数据库返回给程序的记录条数少的多,所以性能有很大的提高。
分享到:
评论

相关推荐

    JDBC性能优化.pdf

    开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC 驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善 JDBC 应用程序的性能介绍一些基本的指导原则,这其中 的原则已经被...

    优化JDBC性能的三大技巧.doc

    优化JDBC性能的三大技巧.doc优化JDBC性能的三大技巧.doc

    TongWeb5.0 性能优化配置.pdf

    TongWeb5.0 性能优化配置,JNDI创建(JDBC连接池相关性能参数优化),项目中配置,线程,日志,JVM等配置优化;

    Oracle JDBC事务的优化 (2004年)

    性能优化是Oracle数据库管理的一项重要任务。Oracle数据库的性能优化可从共享内存、段、数据的组织方式、事务等方面实施。事务优化是性能优化的方法之一,它从应用程序的角度出发,对数据库的访问进行优化,从而提高...

    my三期教程.txt

    性能优化之MySQL数据库性能优化 Mycat、sharding-jdbc 性能优化之Tomcat性能优化 设计模式与实战操作 框架核心原理分析 SpringIOC、AOP、事物原理分析 手写Spring事物 Spring核心源码分析 手写ORM框架 Arraylist...

    5Java性能优化五.zip

    数据库优化 对绝大部分应用系统而言。数据库是不可缺少的一部分。JAVA程序能够使用JDBC的方式连接数据库。对数据库的调优能够分为三个部分: 在应用层对SQL语句进行优化; 对数据库进行优化。 对数据库软件...

    Hibernate3性能优化 Hibernate_regerence3.12

    的效率低于直接JDBC存取,然而,在经过比较好的性能优化之后,Hibernate的性能还是让人相当满意的, 特别是应用二级缓存之后,甚至可以获得比较不使用缓存的JDBC更好的性能,下面介绍一些通常的 Hibernate的优化策略...

    Oracle JDBC连接缓存对JSP数据库处理性能的优化.pdf

    Oracle JDBC连接缓存对JSP数据库处理性能的优化.pdf

    jive.chm

    13 JDBC性能优化技巧 <br> 权限设计 1 权限系统概要 2 关于权限设计方面的问题 3 关于用户角色权限管理一点想法 4 关于权限系统的设计 <br> 缓存系统 1 ...

    构建最高可用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...

    Hibernate程序性能优化.doc

    Hibernate程序性能优化 初用HIBERNATE的人也许都遇到过性能问题,实现同一功能,用HIBERNATE与用JDBC性能相差十几倍很正常,如果不及早调整,很可能影响整个项目的进度。

    Sybase数据库性能优化.pdf

    Sybase数据库性能优化.pdf

    优化Hibernate性能的几点建议

    中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。 即在...

    hibernate性能优化

    Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,性能会有明显提升,如果继续...

    分库分表理论与实战-基于ShardingJDBC5.4.1(资料+视频教程)

    内容包括数据库分片的基础知识、ShardingJDBC的配置与使用、真实场景下的分库分表策略、以及如何通过ShardingJDBC进行数据治理和性能优化。 适用人群: 数据库管理员和后端开发者 对数据库性能优化感兴趣的技术人员 ...

    webLogic服务器性能优化文档

    该文档集中体现了对WebLogic Server 的"运行模式"、"JVM参数设置"、"线程数设置"、"JDBC连接池的性能调整"以及"使用weblogic“自有的IO”性能包"这些方面的设置讲解。 该文档对在web应用发布,提升其性能方面有一定...

    Hibernate 性能优化

    初用HIBERNATE的人也许都遇到过性能问题,实现同一功能,用HIBERNATE与用JDBC性能相差十几倍很正常,如果不及早调整,很可能影响整个项目的进度。

    shardingJdbc.zip

    生产环境中,当单表数据达到一定的量级的时候,查询性能的瓶颈迟早会暴露出来,这个时候,解决思路可以考虑两种,一是从架构上对当前应用进行优化,比如使用es或mongodb等非关系型数据库进行配合使用,当然这种方式...

    sharding-jdbc数据分片

    针对单表数据量大导致的查询缓慢问题进行数据分片从而达到性能优化效果。代码罗列了针对springboot形式的各种分片策略,以及性能对比测试方法。

    论文研究-J2EE架构下数据库访问的性能优化研究.pdf

    提出了在数据库的物理设计、正确选择驱动程序、代码编写等几个方面对数据库访问性能进行优化的方法。

Global site tag (gtag.js) - Google Analytics