测statement的fetchSize性能

来源:互联网 发布:复制信息再在淘宝打开 编辑:程序博客网 时间:2024/05/16 05:38

贴代码:

package com.dc.test;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;






public class TestOraDb implements Runnable {
//驱动程序就是之前在classpath中配置的jdbc的驱动程序jar中
   public static final String drive = "oracle.jdbc.driver.OracleDriver";
   /**
    * 连接地址,各个厂商提供单独记住
    * jdbc:oracle:thin:@localhost:1521:ORCL localhost 是ip地址。
    */
   public static final String url = "jdbc:oracle:thin:@192.168.2.3:1521:sss";
   /**
    * 用户 密码
    */
   public static final String DBUSER="batch";
   public static final String password="batch";
   
     private String part;
     private Integer cnt;
     private Timestamp tsBegin;
     private Timestamp tsEnd;
     private long eclapse;
/**
* @param args
*/
public static void main(String[] args) {
List<TestOraDb> list = new ArrayList<TestOraDb>();
   int i =10;
   for(;i<30; i ++){
    TestOraDb todb = new TestOraDb();
todb.setCnt(1000000);
todb.setPart("NBP201212" + i);
list.add(todb);
   }
   i =10;
   for(;i<30; i ++){
    TestOraDb todb = new TestOraDb();
todb.setCnt(1000000);
todb.setPart("NBP201211" + i);
list.add(todb);
   }
  
   for(int j = 0; j < list.size(); j++){
    new Thread(list.get(j)).start();
   }





}

/**
* create multi connections to oracle db
*/
public Connection getConnection(){
Connection conn = null;
try {
Class.forName(drive);
conn = DriverManager.getConnection(url,DBUSER,password); //连接数据库
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}


/**
* 实现多线程的接口处理
*/
   public void run(){
  
  execPLSQL();
      
  
   }
   public  void execPLSQL() {
  Connection conn = null;//表示数据库连接
  //Statement.setFetchSize(100);
      conn = getConnection();
      Statement stmt = null;
      ResultSet result = null;
          try {
          tsBegin = new Timestamp(System.currentTimeMillis());
          stmt = conn.createStatement();
          stmt.setFetchSize(100);  //添加 fetchsize 这个很有效果。
          String sql = "select t.citizen_card_no, t.txn_dt, t.txn_amt, t.txn_tp from ac_txn_his_dtl partition("+part+") t";
          result = stmt.executeQuery(sql);
          int i = 0;
          while(result.next()){
          String s = result.getString(1);
          i ++ ;
          }
          tsEnd = new Timestamp(System.currentTimeMillis());
          eclapse = tsEnd.getTime() - tsBegin.getTime() ;
          System.out.println("分区是:"+part+"条数是:" + i + "时间是:" + eclapse + "秒");
              //String sql = "{call test_query.lv_test_query(?,?)}";
              // 创建CallableStatement
              //cs = conn.prepareCall(sql);
              // 给?赋相应的值
              //cs.setString(1, this.part);
              //cs.setInt(2, this.cnt);
              // 执行
              //cs.execute();
          } catch (Exception e) {
              e.printStackTrace();
          } finally {
              if (conn != null) {
                  try {
                      // 关闭连接
                 if(result != null){
                 result.close();
                 }
                      stmt.close();
                      conn.close();
                  } catch (SQLException e1) {
                      e1.printStackTrace();
                  }
              }
          }
      }


public String getPart() {
return part;
}


public void setPart(String part) {
this.part = part;
}


public Integer getCnt() {
return cnt;
}


public void setCnt(Integer cnt) {
this.cnt = cnt;
}


}




粘贴测试性能。

---------------------1线程----------------------------------
分区时:NBP20121210条数是:703351时间是:117.351秒
---------------------1线程----设置fetchSize后效果-----------------------------
分区时:NBP20121210条数是:703351时间是:24.729秒


---------------------5线程-----------------------------------
分区是:NBP20121210条数是:703351时间是:170.355秒
分区是:NBP20121214条数是:710757时间是:173.376秒
分区是:NBP20121211条数是:731832时间是:175.839秒
分区是:NBP20121212条数是:728410时间是:176.827秒
分区是:NBP20121213条数是:757606时间是:182.540秒


---------------------5线程---fetchSize后效果----------------------------------
分区是:NBP20121210条数是:703351时间是:27.783秒
分区是:NBP20121214条数是:710757时间是:28.534秒
分区是:NBP20121211条数是:731832时间是:28.971秒
分区是:NBP20121212条数是:728410时间是:29.771秒
分区是:NBP20121213条数是:757606时间是:29.588秒 


---------------------10线程------fetchSize效果--------------------------------
分区是:NBP20121217条数是:637975时间是:27.213秒
分区是:NBP20121210条数是:703351时间是:29.669秒
分区是:NBP20121214条数是:710757时间是:30.179秒
分区是:NBP20121218条数是:724779时间是:31.277秒
分区是:NBP20121216条数是:666196时间是:30.334秒
分区是:NBP20121211条数是:731832时间是:32.000秒
分区是:NBP20121212条数是:728410时间是:31.754秒
分区是:NBP20121219条数是:729637时间是:31.191秒
分区是:NBP20121213条数是:757606时间是:32.345秒
分区是:NBP20121215条数是:745822时间是:32.242秒 


---------------------20线程-------fetchSize效果-----------------------------
分区是:NBP20121227条数是:673710时间是:38.677秒
分区是:NBP20121217条数是:637975时间是:37.323秒
分区是:NBP20121228条数是:643595时间是:38.124秒
分区是:NBP20121210条数是:703351时间是:40.315秒
分区是:NBP20121216条数是:666196时间是:39.966秒
分区是:NBP20121223条数是:687347时间是:40.250秒
分区是:NBP20121214条数是:710757时间是:40.552秒
分区是:NBP20121224条数是:692073时间是:40.881秒
分区是:NBP20121219条数是:729637时间是:42.372秒
分区是:NBP20121213条数是:757606时间是:43.005秒
分区是:NBP20121221条数是:707942时间是:40.340秒
分区是:NBP20121220条数是:743049时间是:42.420秒
分区是:NBP20121218条数是:724779时间是:41.431秒
分区是:NBP20121215条数是:745822时间是:43.472秒
分区是:NBP20121222条数是:708359时间是:41.571秒
分区是:NBP20121211条数是:731832时间是:42.654秒
分区是:NBP20121212条数是:728410时间是:42.953秒
分区是:NBP20121229条数是:749571时间是:42.129秒
分区是:NBP20121226条数是:768700时间是:42.979秒
分区是:NBP20121225条数是:765085时间是:42.871秒


---------------------30线程---------fetchSize效果-------------------------------
分区是:NBP20121217条数是:637975时间是:52.262秒
分区是:NBP20121111条数是:648771时间是:54.340秒
分区是:NBP20121210条数是:703351时间是:57.129秒
分区是:NBP20121223条数是:687347时间是:56.566秒
分区是:NBP20121216条数是:666196时间是:57.168秒
分区是:NBP20121221条数是:707942时间是:58.345秒
分区是:NBP20121228条数是:643595时间是:55.969秒
分区是:NBP20121215条数是:745822时间是:60.134秒
分区是:NBP20121213条数是:757606时间是:60.697秒
分区是:NBP20121219条数是:729637时间是:60.512秒
分区是:NBP20121214条数是:710757时间是:59.256秒
分区是:NBP20121211条数是:731832时间是:60.416秒
分区是:NBP20121110条数是:666050时间是:57.757秒
分区是:NBP20121212条数是:728410时间是:60.728秒
分区是:NBP20121227条数是:673710时间是:60.391秒
分区是:NBP20121224条数是:692073时间是:59.106秒
分区是:NBP20121222条数是:708359时间是:59.546秒
分区是:NBP20121218条数是:724779时间是:60.360秒
分区是:NBP20121114条数是:717144时间是:58.190秒
分区是:NBP20121220条数是:743049时间是:61.002秒
分区是:NBP20121113条数是:729691时间是:59.407秒
分区是:NBP20121117条数是:702545时间是:58.355秒
分区是:NBP20121225条数是:765085时间是:62.074秒
分区是:NBP20121115条数是:732176时间是:60.509秒
分区是:NBP20121116条数是:730449时间是:59.120秒
分区是:NBP20121229条数是:749571时间是:61.202秒
分区是:NBP20121112条数是:728333时间是:60.047秒
分区是:NBP20121119条数是:743183时间是:59.682秒
分区是:NBP20121226条数是:768700时间是:61.392秒
分区是:NBP20121118条数是:753491时间是:60.934秒


-----------------40线程---------fetchSize效果-------------------
分区是:NBP20121217条数是:637975时间是:66.666秒
分区是:NBP20121126条数是:571028时间是:63.758秒
分区是:NBP20121210条数是:703351时间是:72.579秒
分区是:NBP20121223条数是:687347时间是:72.970秒
分区是:NBP20121110条数是:666050时间是:74.066秒
分区是:NBP20121228条数是:643595时间是:72.916秒
分区是:NBP20121221条数是:707942时间是:76.833秒
分区是:NBP20121216条数是:666196时间是:75.247秒
分区是:NBP20121222条数是:708359时间是:76.996秒
分区是:NBP20121117条数是:702545时间是:77.236秒
分区是:NBP20121215条数是:745822时间是:78.723秒
分区是:NBP20121111条数是:648771时间是:73.280秒
分区是:NBP20121113条数是:729691时间是:78.287秒
分区是:NBP20121219条数是:729637时间是:77.866秒
分区是:NBP20121229条数是:749571时间是:79.390秒
分区是:NBP20121212条数是:728410时间是:78.545秒
分区是:NBP20121224条数是:692073时间是:76.945秒
分区是:NBP20121122条数是:622115时间是:74.359秒
分区是:NBP20121211条数是:731832时间是:79.164秒
分区是:NBP20121213条数是:757606时间是:79.909秒
分区是:NBP20121225条数是:765085时间是:80.926秒
分区是:NBP20121123条数是:679836时间是:75.158秒
分区是:NBP20121114条数是:717144时间是:79.140秒
分区是:NBP20121220条数是:743049时间是:79.340秒
分区是:NBP20121214条数是:710757时间是:77.265秒
分区是:NBP20121112条数是:728333时间是:78.560秒
分区是:NBP20121116条数是:730449时间是:78.785秒
分区是:NBP20121218条数是:724779时间是:77.529秒
分区是:NBP20121226条数是:768700时间是:80.905秒
分区是:NBP20121124条数是:722741时间是:78.593秒
分区是:NBP20121121条数是:733338时间是:79.133秒
分区是:NBP20121115条数是:732176时间是:77.597秒
分区是:NBP20121128条数是:746711时间是:79.196秒
分区是:NBP20121227条数是:673710时间是:78.395秒
分区是:NBP20121120条数是:730217时间是:76.892秒
分区是:NBP20121125条数是:754552时间是:79.533秒
分区是:NBP20121118条数是:753491时间是:82.253秒
分区是:NBP20121119条数是:743183时间是:77.063秒
分区是:NBP20121129条数是:745404时间是:76.832秒
分区是:NBP20121127条数是:743161时间是:77.723秒



可以很显然的看到使用 FetchSize开启以后效果是很明显的。

这里我的fetchSize的值为100


原创粉丝点击