`
tw5566
  • 浏览: 458859 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

jdbc程序的性能

    博客分类:
  • java
阅读更多
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性能优化详解 #### 一、引言 在当今数据密集型的应用环境中,Java数据库连接(JDBC)作为Java应用程序与数据库之间的重要...希望本文能够为那些正在努力提高JDBC应用程序性能的开发者们提供有价值的参考。

    oracle JDBC驱动程序

    Oracle JDBC驱动程序是Java应用程序与Oracle数据库之间通信的桥梁,使得开发者可以利用Java语言执行SQL语句和处理数据库数据。标题中的"10g与9i"指的是Oracle数据库的两个不同版本,即Oracle Database 10g和9i。这些...

    JDBC.rar_JDBC程序_jdbc

    "JDBC.rar_JDBC程序_jdbc"这个压缩包提供的示例程序是针对初学者了解和实践JDBC连接MySQL数据库的基础教程。通过学习和理解这个小程序,新手可以掌握如何使用JDBC进行数据库操作,包括加载驱动、建立连接、执行SQL、...

    Oracle Database 11g 第 2 版 (11.2.0.4) JDBC 驱动程序— 包含 JDBC 示例程序。

    在这个压缩包中,我们得到了Oracle 11g的JDBC驱动程序,它包含了用于连接Oracle数据库的必要组件,以及一些示例程序,帮助开发者更好地理解和使用JDBC。 JDBC驱动程序是Oracle数据库与Java应用程序之间的桥梁,它...

    JDBC.rar_JDBC程序

    **JDBC程序的核心概念:** 1. **JDBC驱动程序**:Java程序与数据库之间的桥梁,分为四种类型:1)JDBC-ODBC桥接驱动,2)本地API部分二进制驱动,3)网络协议纯Java驱动,4)Java数据库连接(JDBC)应用驱动。 2. ...

    sql sever 2000 jdbc 驱动程序

    SQL Server 2000 JDBC 驱动程序是微软为Java开发者提供的一个数据库连接工具,它允许Java应用程序通过Java Database Connectivity (JDBC) API与SQL Server 2000数据库进行交互。JDBC驱动程序是Java编程语言中的一个...

    数据库系统的JDBC驱动程序.rar

    数据库系统的JDBC驱动程序是Java编程语言中与各种数据库进行交互的重要组成部分。JDBC(Java Database Connectivity)是一种标准API,由Sun Microsystems(现为Oracle公司)开发,它允许Java应用程序连接到不同类型...

    jdbc驱动程序

    JDBC驱动程序是这个框架的关键组成部分,它充当了Java应用程序与数据库之间的桥梁。了解JDBC驱动程序对于任何Java开发者来说都至关重要,尤其是那些需要处理数据库连接的开发者。 首先,JDBC驱动程序分为四种类型:...

    SQL Server2000的JDBC驱动程序

    而Microsoft Native Driver(也称为SQL Server JDBC驱动)是直接针对SQL Server设计的,性能更优,且不需ODBC驱动程序支持。 安装JDBC驱动通常包括以下几个步骤: 1. 下载:首先,你需要获取适用于SQL Server 2000...

    jsp中jdbc驱动程序

    在Java服务器页面(JSP)中使用 JDBC(Java Database Connectivity)驱动程序是连接到数据库并执行SQL操作的关键步骤。JDBC提供了一种标准接口,使得Java应用程序能够与各种类型的数据库进行交互,无论数据库是...

    SQLServer jdbc驱动程序

    SQLServer JDBC驱动程序是用于Java应用程序与Microsoft SQL Server数据库之间通信的重要组件。它是Java Database Connectivity (JDBC) API的一部分,允许Java开发者通过编写Java代码来访问和操作SQL Server中的数据...

    sqlserver2005 JDBC驱动程序JAR包

    4. **连接池支持**:JDBC驱动可与常见的Java连接池(如C3P0、Apache DBCP、HikariCP等)无缝集成,提升应用程序的性能和资源利用率。 5. **支持大型对象**:JDBC驱动支持BLOB、CLOB和XML等大型数据类型的读写。 6....

    JDBC与Java数据库程序设计

    JDBC为Java应用程序提供了标准化的方法来访问关系型数据库,无论数据库是Oracle、MySQL、PostgreSQL还是其他任何支持JDBC的数据库。 JDBC的核心组件包括以下几个部分: 1. **Driver Manager**:这是Java应用程序与...

    oracle 9i jdbc驱动程序

    Oracle 9i JDBC驱动程序是Oracle数据库连接Java应用程序的关键组件,它允许Java应用程序通过网络与Oracle数据库进行交互。JDBC(Java Database Connectivity)是Java平台的标准API,用于处理Java应用程序和各种类型...

    idea jdbc 示例程序

    【标题】"idea jdbc 示例程序" 是一个基于Java集成开发环境IntelliJ IDEA(简称IDEA)的数据库连接示例项目,它展示了如何在IDEA中使用Java Database Connectivity(JDBC)技术进行数据库操作。这个示例适用于Java ...

    网上下的jdbc程序

    1. **驱动程序**:JDBC驱动程序是Java应用程序与数据库之间的桥梁。根据不同的数据库和连接方式,JDBC驱动分为四种类型:JDBC-ODBC桥驱动、网络纯Java驱动、二进制兼容驱动和Java数据库连接API驱动。驱动的选择直接...

    JDBC程序访问数据库

    ### JDBC程序访问数据库知识点详解 #### 一、JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供...

    jdbc 2.0驱动程序jar包

    1. **JDBC连接池**:JDBC 2.0引入了Connection Pool的概念,允许应用程序重复使用已建立的数据库连接,减少每次连接和断开的开销,提高了整体性能。例如,C3P0、Apache DBCP和HikariCP等都是基于JDBC 2.0连接池实现...

Global site tag (gtag.js) - Google Analytics