oracle jdbc fetchsize取值对性能的影响

标签: oracle jdbc fetchsize | 发表时间:2013-08-28 17:24 | 作者:guogang83
出处:http://blog.csdn.net

       通过JDBC取数据时,默认是10条数据取一次,即fetch size为10,如果增大这个数字可以减少客户端与oracle的往返,减少响应时间,网上有建议这个数字不要超过100,要不然对中间件内存消耗大(没有做过实验)。

package com.gg.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class FetchSize {
    static final String driver_class  = "oracle.jdbc.driver.OracleDriver";
    static final String connectionURL = "jdbc:oracle:thin:@10.10.29.150:1522:ordb10";
    static final String userID        = "test";
    static final String userPassword  = "test";
    public void runTest(int fetchSize) {
        Connection  con = null;
        Statement   stmt = null;
        ResultSet   rset = null;
        long startTime =System.currentTimeMillis();
        String  query_string = "SELECT * FROM test";//test有5万条记录
        try {
            Class.forName (driver_class).newInstance();
            con = DriverManager.getConnection(connectionURL, userID, userPassword);
            stmt = con.createStatement();
            stmt.setFetchSize(fetchSize);
            rset = stmt.executeQuery (query_string);
            while (rset.next ()) {
                 rset.getString(1);
                 rset.getString(2);
                 rset.getString(3);
            }
            rset.close();
            stmt.close();
            long endTime =System.currentTimeMillis();
            System.out.println("fetchsize为"+fetchSize+"---消耗的时间:"+(endTime-startTime));
        }  catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        FetchSize fetchSize = new FetchSize();
        fetchSize.runTest(10);
        fetchSize.runTest(50);
        fetchSize.runTest(100);
        fetchSize.runTest(200);
        fetchSize.runTest(500);
        fetchSize.runTest(1000);
    }
}


结果:

fetchsize为10    ---消耗的时间:22140ms
fetchsize为50    ---消耗的时间:13780ms
fetchsize为100  ---消耗的时间:5110ms
fetchsize为200  ---消耗的时间:3984ms
fetchsize为500  ---消耗的时间:2625ms
fetchsize为1000---消耗的时间:2875ms

作者:guogang83 发表于2013-8-28 17:24:37 原文链接
阅读:7 评论:0 查看评论

相关 [oracle jdbc fetchsize] 推荐:

oracle jdbc fetchsize取值对性能的影响

- - CSDN博客编程语言推荐文章
       通过JDBC取数据时,默认是10条数据取一次,即fetch size为10,如果增大这个数字可以减少客户端与oracle的往返,减少响应时间,网上有建议这个数字不要超过100,要不然对中间件内存消耗大(没有做过实验). String query_string = "SELECT * FROM test";//test有5万条记录.

oracle的jdbc驱动

- - Oracle - 数据库 - ITeye博客
oracle的jdbc驱动主要有下面三类:.   1、JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动. 因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件,其实主要是用到orcale客户端里以dll方式提供的oci和服务器配置.

Oracle RAC JDBC connection string - multitude - 博客园

- -
官方文档, 一如既往地冗长, 可靠. 这个第三方总结很简单, 看样子是第三方驱动厂商.

(转)Oracle JDBC Memory Management中的客户端缓存

- - jackyrong
  对于oracle jdbc中,一个容易忽略的参数是:prepared-statement-cache-size,这次转来. http://xulingbo.net/?p=109这篇好文,详细讲解了这个参数用法. 从Oracle10g开始在JDBC驱动中,增加了对执行每个Statement的缓存.

JDBC操纵Oracle数据库中的BLOB字段

- - Oracle - 数据库 - ITeye博客
                                                                        BLOB字段的写入. 方法一:(JDBC2.0 规范). 2.插入一个空的blob. 3.使用行级锁定blob字段.                                                                        BLOB字段的读取.

HA-JDBC -

- -
The state manager component is responsible for storing the active status of each database in the cluster, as well as any durability state.

Java Jdbc减少与Oracle之间交互提升批量处理性能,到底该如何优化才好?

- - CSDN博客推荐文章
不拾掇Java有好几年了(N>3吧),之所以写这篇文章其实是纯粹是为了给开发人员一些好的使用jdbc真正去减少交互和提升批量处理batch update性能的例子;  如果你是DBA,那么工作之余你可以把这篇文章推荐给开发看一下, 也许这些例子他已经知道了, 倘若他不知道,那么也算一种福利了. 能考虑到在应用程序client和 数据库服务器DB server间减少交互时间,批量更新处理的绝对是有助于重构和优化代码的好同志;  但这种优化一定要注意方法,如果是自行去重新发明一种轮子的话, 效果往往是不如人意的.

JDBC性能小贴

- - 开源软件 - ITeye博客
本文收集了一些用于提升JDBC性能的方法. Java应用或者JavaEE Web应用的性能是很重要的,尤其是数据库后端对应用的性能影响. 不知你是否经历过Java、JavaEE web应用非常慢的案例没有(处理一个简单的请求都要花上好几秒的时间用于数据库访问,分页、排序等). 下面这些贴士也许能提升Java应用的性能.

jdbc日志,Log4jbdc-remix使用

- - 企业架构 - ITeye博客
   做项目的时候给jdbc做日志,只打印出代. 由是看看有没有给jdbc做日志的框架. 找到了log4jdbc,但是觉得还不是很理想,由是又看了看,还有一个护展插件log4jdbc-remix. 先不扯这么多,先来教大家怎么使用吧. 使用这个插件依赖4个类:log4j,slf4j-log4j,slf4j-api,log4j-remix.

JDBC事务控制管理

- - 编程语言 - ITeye博客
事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A——B转帐,对应于如下两条sql语句. 数据库默认事务是自动提交的,也就是发一条sql它就执行一条. 如果想多条sql放在一个事务中执行,则需要使用如下语句. 方式一:利用SQL语句管理事务. start transaction;--开启事务,这条语句之后的sql语句将处在一个事务当中,这些sql语句并不会立即执行.