• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用JDBC插入大量數據的性能測試

    發表于:2011-09-23來源:未知作者:領測軟件測試網采編點擊數: 標簽:性能測試
    使用jdbc向數據庫插入100000條記錄,分別使用statement,PreparedStatement,及PreparedStatement+批處理3種方式進行測試: 1、使用statement插入100000條記錄

      使用jdbc向數據庫插入100000條記錄,分別使用statement,PreparedStatement,及PreparedStatement+批處理3種方式進行測試

      1、使用statement插入100000條記錄

     

    public void exec(Connection conn){

     try {

      Long beginTime = System.currentTimeMillis();

      conn.setAutoCommit(false);//設置手動提交

      Statement st = conn.createStatement();

      for(int i=0;i<100000;i++){

       String sql="insert into t1(id) values ("+i+")";

       st.executeUpdate(sql);

      }

      Long endTime = System.currentTimeMillis();

      System.out.println("st:"+(endTime-beginTime)/1000+"秒");//計算時間

      st.close();

      conn.close();

     } catch (SQLException e) {

     // TODO Auto-generated catch block

     e.printStackTrace();

     }

    }

      2、使用PreparedStatement對象

     

    public void exec2(Connection conn){

     try {

      Long beginTime = System.currentTimeMillis();

      conn.setAutoCommit(false);//手動提交

      PreparedStatement pst = conn.prepareStatement("insert into t1(id) values (?)");

      for(int i=0;i<100000;i++){

       pst.setInt(1, i);

       pst.execute();

      }

      conn.commit();

      Long endTime = System.currentTimeMillis();

      System.out.println("pst:"+(endTime-beginTime)/1000+"秒");//計算時間

      pst.close();

      conn.close();

     } catch (SQLException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     }

    }

      3、使用PreparedStatement + 批處理

     

    public void exec3(Connection conn){

     try {

      conn.setAutoCommit(false);

      Long beginTime = System.currentTimeMillis();

      PreparedStatement pst = conn.prepareStatement("insert into t1(id) values (?)");

      for(int i=1;i<=100000;i++){

       pst.setInt(1, i);

       pst.addBatch();

       if(i%1000==0){//可以設置不同的大??;如50,100,500,1000等等

        pst.executeBatch();

        conn.commit();

        pst.clearBatch();

       }

      }

      Long endTime = System.currentTimeMillis();

      System.out.println("pst+batch:"+(endTime-beginTime)/1000+"秒");

      pst.close();

      conn.close();

     } catch (SQLException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     }

    }

      在Oracle 10g中測試,結果:

      1、使用statement耗時142秒;

      2、使用PreparedStatement耗時56秒;

      3、使用PreparedStatement + 批處理耗時:

      a.50條插入一次,耗時5秒;

      b.100條插入一次,耗時2秒;

      c.1000條以上插入一次,耗時1秒;

      通過以上可以得出結論,在使用jdbc大批量插入數據時,明顯使用第三種方式(PreparedStatement + 批處理)性能更優。

      當使用sqlserver 2000進行測試時,第三種方式最少耗時5秒,從這方面可以看出Oracle在處理大量數據時,明顯性能更強。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>