<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 37  文章 - 14  trackbacks - 0
    <2009年6月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    相關鏈接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    JDBC2.0 sql批量提交效率測試

    測試環境:

       springframework 1.0

           數據庫:Informix 9.21.FC1

           表結構:

           Column name          Type                                    Nulls

    f1                   varchar(10,0)                           yes

    f2                   varchar(10,0)                           yes

    f3                   varchar(10,0)                           yes

    f4                   varchar(10,0)                           yes

    f5                   varchar(10,0)                           yes

    f6                   varchar(10,0)                           yes

    f7                   varchar(10,0)                           yes

    f8                   varchar(10,0)                           yes

    f9                   varchar(10,0)                           yes

    f10                  varchar(10,0)                           yes

    f1上建立索引

    測試情況:

    case 1SQL單個提交,不prepare,使用BaseDAOJdbcexecuteSql方法

    case 2SQL單個提交,prepare,方法如下:

    public void saveDataSinglePrepare(final List data) {

            getJdbcTemplate().execute(insertData,

                new PreparedStatementCallback() {

                              public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {

                                  Iterator iter = data.iterator();

                                  while (iter.hasNext()){

                                      Object[] objs = (Object[]) iter.next();

                                      for(int i=0; i

                                                ps.setObject(i+1, objs[i]);

                                               }

                                               ps.execute();

                                  }

                                  return null;

                              }

                    }

        );

        }

    case 3SQL批量提交,使用BaseDAOJdbcexecuteBatch方法

    /**

     * Jdbc sql的批量操作

     * @param sql       sql語句

     * @param values 包含參數的ListList的每個元素是一個Object[]Object[]是一個單獨的sql操作所需的參數

     */

    public void executeBatch(final String sql, final List values){

        if (values.size() == 0) return ;

        getJdbcTemplate().batchUpdate(sql,

            new BatchPreparedStatementSetter() {

                   public void setValues(PreparedStatement ps, int i) throws SQLException {

                       Object[] args = (Object[]) values.get(i);

                       for(int j=0; j

                           ///log.debug(String.valueOf(j+1)+":"+args[j].toString());

                                  ps.setObject(j+1, args[j]);

                                 }

                }

                public int getBatchSize() {

                    return values.size();

                }

                   }

        );  

    }

    case 4SQL批量提交,使用BaseDAOJdbcexecuteBatch2方法

    private static final int batch_size = 100;

    public void executeBatch2(final String sql, final List values){

        getJdbcTemplate().execute(sql,

            new PreparedStatementCallback() {

                          public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {

                              Iterator iter = values.iterator();

                              int sqlCount = 0;

                              while (iter.hasNext()){

                                  if (sqlCount >= batch_size){

                                      ps.executeBatch();

                                      sqlCount = 0;

                                      //log.info("executeBatch:" + sql);

                                  }

                                  Object[] args = (Object[]) iter.next();

                                  for(int i=0; i

                                         ps.setObject(i+1, args[i]);

                                        }

                                  ps.addBatch();

                               sqlCount ++;

                               log.debug("sqlCount:" + String.valueOf(sqlCount));

                              }

                             

                              if (sqlCount > 0){

                               ps.executeBatch();

                               sqlCount = 0;

                               //log.info("executeBatch:" + sql);

                           }

                                 return null;

                          }

            }

        );  

    }    

    posted on 2009-06-19 13:44 扭曲的鉛筆 閱讀(944) 評論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 亚洲第一网站免费视频| 国产乱子伦精品免费无码专区| 免费很黄很色裸乳在线观看| 久久久国产亚洲精品| 无码人妻一区二区三区免费| 亚洲第一区视频在线观看| 99视频在线免费| 亚洲综合图片小说区热久久| 99爱在线精品视频免费观看9 | 亚洲国产成人精品91久久久| 日日摸日日碰夜夜爽亚洲| 亚洲AV成人潮喷综合网| 一区二区视频免费观看| 亚洲中文字幕第一页在线| a级毛片100部免费观看| 久久综合亚洲色一区二区三区| 免费A级毛片在线播放| 亚洲中文字幕在线无码一区二区 | 成人免费无码大片A毛片抽搐色欲| 国产精品亚洲综合久久| 又粗又硬又大又爽免费视频播放| 日韩在线一区二区三区免费视频| 国产成人亚洲精品影院| 免费A级毛片无码A∨| 中文字幕在线日亚洲9| 四虎免费永久在线播放| 91免费在线视频| 亚洲av日韩av无码av| 免费国产真实迷j在线观看| 中文字幕无线码免费人妻| 亚洲网站在线播放| 日韩免费视频在线观看| 两个人看的www免费高清| 综合自拍亚洲综合图不卡区| 免费看又爽又黄禁片视频1000| 羞羞视频在线观看免费| 久久久久亚洲精品天堂| 国产男女性潮高清免费网站| 三年片免费高清版 | 亚洲国产精品尤物YW在线观看| a级在线免费观看|