`
fengyie007
  • 浏览: 153633 次
  • 性别: 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.net/forum/images/smiles/icon_surprised.gif order=0>racle: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性能优化.pdf”文件提供的信息,...

    优化JDBC方法功略

    本文将详细介绍三个主要的JDBC性能优化技巧,并提供了一些通用的准则,以帮助开发者提高JDBC应用程序的运行效率。 首先,正确使用数据库MetaData方法是关键。MetaData方法通常用于获取数据库表、列、索引等元数据...

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

    标题中的“优化JDBC性能的三大技巧”是指在开发基于Java的JDBC应用程序时,为了提升性能而采取的关键策略。这些技巧主要集中在正确使用数据库MetaData方法、只获取必要的数据以及选择最佳性能的功能,并且有效管理...

    JDBC教程

    JDBC性能优化 - 使用PreparedStatement代替Statement,减少SQL解析时间。 - 使用批处理处理大量插入或更新操作。 - 合理设置JDBC连接池大小,避免频繁创建和销毁连接。 - 使用Statement的`setFetchSize()`方法控制...

    jdbc连接池配置(优化连接速度)

    在IT行业中,数据库连接管理是应用系统性能优化的关键环节之一,而JDBC连接池就是解决这一问题的有效工具。本文将详细讲解JDBC连接池的工作原理、配置方法以及如何通过优化来提升连接速度。 JDBC(Java Database ...

    JDBC驱动软件8.0版本

    JDBC性能优化** - 使用PreparedStatement而非Statement,避免SQL注入并提高效率。 - 执行批处理操作,一次性提交多个SQL语句。 - 使用连接池管理数据库连接,避免频繁创建和销毁连接。 - 设置合适的事务隔离级别,...

    spark jdbc 读取并发优化

    然而,在使用Spark与数据库交互时,尤其是使用JDBC(Java Database Connectivity)读取数据时,如果不优化并发度,很容易造成性能瓶颈。特别是在面对大规模数据集时,单线程任务过重会导致任务执行缓慢甚至挂起,...

    JDBC数据库连接JAR包

    3. **JDBC性能优化** - 使用PreparedStatement:预编译的SQL可以提高执行效率,避免SQL注入攻击。 - 批量处理:通过`addBatch()`和`executeBatch()`方法,可以一次性提交多条SQL语句,提高效率。 - 数据库连接池...

    各种数据库的jdbc驱动

    6. **JDBC性能优化**: - 使用PreparedStatement替代Statement,提高SQL执行效率,避免SQL注入问题。 - 分批处理批量插入或更新,减少网络通信次数。 - 使用连接池管理数据库连接,避免频繁创建和销毁连接。 - ...

    sqlserver2000 jdbc(3jar包)

    6. **JDBC性能优化**: - 使用连接池管理数据库连接,可以提高性能并减少资源消耗。 - 对于大数据量操作,考虑使用批处理(Batch Processing)来提升效率。 - 注意调整SQL语句,避免全表扫描,利用索引提高查询速度...

    JDBC API教程与参考手册(第三版)前言+目录+第一,二章

    - 探讨JDBC性能优化策略及最佳实践。 #### 目录概览 - **第1章:JDBC基础** - JDBC简介 - 安装配置指南 - 第一个JDBC程序 - 连接数据库 - 执行SQL语句 - **第2章:JDBC核心API** - DriverManager类详解 - ...

    SQL Server 2005 JDBC Driver.rar

    六、JDBC性能优化 1. 使用PreparedStatement而非Statement,因为PreparedStatement可以被缓存,减少解析和编译的时间。 2. 执行批处理操作,减少网络往返次数。 3. 使用连接池管理数据库连接,避免频繁创建和关闭...

    java_JDBC_5.17_驱动包 (mysql-connector-java-5.1.7-bin.jar)

    4. **JDBC性能优化**: - 使用PreparedStatement代替Statement,可以防止SQL注入,并且预编译的SQL语句通常执行更快。 - 使用批处理操作批量执行SQL语句,提高效率。 - 合理设置连接池,避免频繁的数据库连接创建...

    JDBC高级教程

    10. **JDBC性能优化** 优化JDBC应用包括:减少数据库往返次数(例如,批量处理、联合查询),使用PreparedStatement代替Statement,合理设置连接池参数,以及正确关闭资源等。 总结,JDBC高级教程涵盖了从基础的...

    JDBC 数据库连接总汇

    9. **JDBC性能优化** - 使用PreparedStatement替代Statement,减少解析时间。 - 合理设置批处理大小,避免内存溢出。 - 使用连接池,减少连接创建和销毁的开销。 - 及时关闭结果集、语句和连接,释放资源。 10....

    Mybatis与JDBC批量插入MySQL数据库性能测试

    总的来说,理解和掌握批量插入技术,无论是使用JDBC还是Mybatis,都能帮助我们优化数据库操作,提升系统性能。对于大型项目,合理利用批量插入策略,结合数据库的性能调优,可以显著提高服务响应速度和用户体验。

    java-jdbc-end

    10. **JDBC优化**:使用`PreparedStatement`而非`Statement`,批处理操作,设置合适的缓冲大小,以及及时关闭资源都是常见的JDBC性能优化手段。 综上所述,"java-jdbc-end"这个实例可能涵盖了从连接数据库、执行SQL...

    jdbc技术介绍

    JDBC性能优化 - 使用PreparedStatement代替Statement,预编译SQL可以减少解析时间。 - 使用批处理操作,减少网络通信次数。 - 打开和关闭数据库连接应尽可能快,考虑使用连接池(如C3P0、HikariCP)管理连接,避免...

    iBATIS3与JDBC性能对比

    总结来说,iBATIS3提供了更高的开发效率和易用性,而JDBC则在性能优化和灵活性上有优势。选择哪个取决于项目需求,例如,对于快速开发和维护的小型项目,iBATIS3可能是更好的选择;而对于性能要求极高,且需要深度...

    各类数据库的驱动(jdbc连接)

    6. **JDBC性能优化**: - 使用PreparedStatement代替Statement,以预编译SQL,提高效率并防止SQL注入。 - 使用批处理操作批量执行SQL,减少网络通信次数。 - 及时关闭不再使用的资源,避免内存泄漏。 7. **事务...

Global site tag (gtag.js) - Google Analytics