• <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插入大量數據的性能測試

    發布: 2010-4-21 17:10 | 作者: 網絡轉載 | 來源: 領測軟件測試網編輯 | 查看: 91次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試中使用JDBC插入大量數據的性能測試

    使用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/

    TAG: jdbc JDBC 軟件測試 數據 性能測試


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品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>