`

JDBC优化

 
阅读更多
相比Hibernate、iBatis、DBUtils等,理论上JDBC的性能都超过它们。JDBC提供更底层更精细的数据访问策略,这是Hibernate等框架所不具备的。

  在一些高性能的数据操作中,越高级的框架越不适合使用。这里是我在开发中对JDBC使用过程中一些优化经验总结。

  1、选择纯Java的JDBC驱动。

  2、使用连接池--使用一个“池”来管理JDBC连接,并精心调试池配置的参数,目前可用的数据库连接池很多很多。

  如何配置合适的参数呢,需要的是测试,而不是感觉。

  3、重用Connection--最大限度使用每个数据库连接,得到了就不要轻易“丢弃”。

  有时候在一个过程中,会多次操作数据库,而仅仅需要一个连接就够了,没必用一次就获取一个连接,用完后关闭或者入池。这样会增加“池”管理的成本,千万别以为你用了“池”就可以随便申请和归还连接,都是有代价的。如果是一个庞大循环块中操作数据库,更应该注意此问题!

  4、重用Statement--对于一些预定义SQL,设置为静态常量,并尽可能重用预定义SQL产生的PreparedStatement对象。对于多次使用一种模式的SQL,使用预定义SQL可以获取更好的性能。

  5、使用批处理SQL。
     可以批量执行混合模式的SQL、有预定义的,还有静态的

                        String sql = "insert into testdb.book (kind, name) values (?,?)";
                        PreparedStatement pstmt = conn.prepareStatement(sql);
                        pstmt.setString(1, "java");
                        pstmt.setString(2, "jjjj");
                        pstmt.addBatch();    //添加一次预定义参数
                        pstmt.setString(1, "ccc");
                        pstmt.setString(2, "dddd");
                        pstmt.addBatch();    //再添加一次预定义参数
                        //添加一次静态SQL
                        pstmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");
                        //批量执行预定义SQL
                        pstmt.executeBatch();

  6、优化结果集ResultSet--查询时候,返回的结果集有不同的类型,优先选择只读结果集、不可滚动的属性。
优化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
             单向滚动性能比较高.
7、事物优化--如果数据库不支持事物,就不要写回滚代码,如果不考虑事物,就不要做事务的控制。
  8、安全优化--管理好你的Connection对象,在异常时候能“入池”或者关闭。因此应该将Connection释放的代码写在异常处理的finally块中。
  9、异常处理优化--不要轻易吞噬SQLException,对于DAO、Service层次的数据访问,一般在DAO中跑出异常,在Service中处理异常。但DAO中也可以处理异常,并做转义抛出,不要随便抛出RuntimeExeption,因为这是JVM抛出的,不需要你可以去抛出,因为RuntimeException往往会导致系统挂起。
  10、代码高层优化--在以上的基础上,优化封装你的数据访问方式,尽可能让代码简洁好维护,如果你还觉得性能不行,那就该从整个系统角度考虑优化了,比如加上缓存服务器,集群、负载均衡、优化数据库服务器等等,以获取更好的系能。
分享到:
评论

相关推荐

    关于Weblogic 9/10 中JDBC优化和监控的那点事

    本文将详细介绍在Weblogic 9/10版本中针对JDBC优化的相关知识和技术要点,包括配置参数的选择、优化方法以及监控策略等。 #### 二、Weblogic中的JDBC配置与优化 ##### 1. 配置文件概述 在Weblogic中,主要涉及三种...

    spark jdbc 读取并发优化

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

    优化JDBC方法功略

    标题“优化JDBC方法攻略”和描述中提到的是关于JDBC(Java Database Connectivity)数据库操作的性能优化,适合初学者和教学使用。本文将详细介绍三个主要的JDBC性能优化技巧,并提供了一些通用的准则,以帮助开发者...

    JDBC优化数据连接

    JDBC 数据连接优化 JDBC(Java Database Connectivity)是一种标准的Java API,用于与关系数据库进行交互。 JDBC 提供了一个统一的接口来访问不同的关系数据库,例如 Oracle、MySQL、SQL Server 等。 在本文中,...

    JDBC优化数据库连接[收集].pdf

    在优化数据库连接方面,JDBC扮演着至关重要的角色,尤其是在处理大量并发请求和移动设备的场景中。 数据库连接的管理是性能优化的关键。通常,频繁地创建和关闭数据库连接会消耗大量的系统资源,导致性能下降。为了...

    JDBC 结构优化2 ATM交互系统源码

    以下是一些JDBC优化策略: 1. **批处理(Batch Processing)**:对于一系列相似的SQL操作,如批量插入或更新,使用批处理能显著提高性能,减少网络往返次数。 2. **PreparedStatement**:预编译的SQL语句比...

    jdbc教程_jdbc教程

    ### JDBC优化技巧 1. **批处理**:通过Statement对象的`addBatch()`和`executeBatch()`方法,可以将多个SQL语句作为一个批次执行,提高性能。 2. **使用PreparedStatement**:预编译SQL语句,减少解析次数,提升...

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

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

    JDBC与Hibernate区别

    在实际应用中,开发者可以根据具体情况进行权衡,甚至结合两者的优点,例如使用Hibernate进行常规操作,而在性能关键点采用JDBC优化。重要的是理解它们的工作原理,以便在不同的开发环境下做出明智的决策。

    jdbc jar包

    JDBC优化技巧** - 使用PreparedStatement而非Statement,因为预编译的SQL可以提高执行速度,并防止SQL注入。 - 批量处理(`addBatch()`和`executeBatch()`)可以减少网络通信,提高效率。 - 使用连接池,减少连接...

    Jdbc实用教程

    五、JDBC优化技巧 1. 使用PreparedStatement以减少SQL解析时间,避免SQL注入攻击。 2. 批量处理:通过`Statement.addBatch()`和`Statement.executeBatch()`批量执行SQL,提高效率。 3. 数据库连接池:使用...

    JDBC数据库

    ### JDBC优化技巧 1. **批处理(Batch Processing)**:多个SQL语句可以一起提交,提高性能。 2. **使用连接池(Connection Pool)**:避免频繁创建和关闭连接,减少系统开销。 3. **设置合适的缓冲大小**:调整`...

    JDBC课件

    JDBC优化技巧** - 使用PreparedStatement替代Statement,减少SQL解析时间。 - 使用批处理操作(`addBatch()`和`executeBatch()`)批量执行SQL,提升性能。 - 合理设置连接池,避免频繁创建和销毁连接。 - 使用连接...

    JDBC课件及源码.zip

    JDBC优化** - 使用批处理:`pstmt.addBatch();`和`pstmt.executeBatch();` - 使用PreparedStatement代替Statement,减少解析SQL的时间。 - 关闭资源:`rs.close(); pstmt.close(); conn.close();`以释放数据库连接...

    JDBC简单的资料

    9. **JDBC优化技巧** - 使用PreparedStatement而非Statement,减少SQL解析次数。 - 适当调整数据库连接池大小,避免过多的连接创建与销毁。 - 使用批处理处理大量数据操作。 - 及时关闭数据库资源,防止资源泄露...

    jdbc5.1.17src

    7. JDBC优化: - 使用PreparedStatement代替Statement,减少SQL解析时间。 - 使用批处理(Batch Updates)提高批量插入或更新的效率。 - 使用连接池(Connection Pool)管理数据库连接,避免频繁创建和关闭连接。...

    ch4.JDBC技术_JAVA数据库_jdbc_canalsj4_

    7. **JDBC优化** - 使用PreparedStatement代替Statement,减少解析SQL的时间。 - 使用批处理执行多条相似的SQL语句。 - 合理设置JDBC连接参数,如超时、缓冲大小等。 - 使用连接池管理数据库连接。 8. **JDBC与...

    JDBC笔记JDBC笔记JDBC笔记

    **JDBC优化**: - 使用PreparedStatement而非Statement。 - 执行批量操作。 - 使用连接池。 - 合理设置Statement的fetchSize和结果集类型。 - 避免过多的数据库交互,尽可能减少网络延迟。 以上是JDBC的基本概念、...

    JDBC.rar_ado ODBC jdbc_jdbc

    7. **JDBC优化** - 使用连接池:例如C3P0、HikariCP或Apache DBCP,提高数据库连接的复用性,减少创建和销毁连接的开销。 - 分页查询:避免一次性加载大量数据,使用`LIMIT`和`OFFSET`或`RowNumber()`等方法实现...

    JDBC驱动及JAR包

    5. **JDBC优化技巧**: - 使用PreparedStatement替代Statement,可以防止SQL注入,提高执行效率。 - 使用批处理(Batch Processing)可以批量提交SQL语句,减少网络往返次数。 - 合理设置连接池,避免频繁创建和...

Global site tag (gtag.js) - Google Analytics