<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

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    相關(guān)鏈接

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    JDBC2.0 sql批量提交效率測(cè)試

    測(cè)試環(huán)境:

       springframework 1.0

           數(shù)據(jù)庫(kù):Informix 9.21.FC1

           表結(jié)構(gòu):

           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上建立索引

    測(cè)試情況:

    case 1SQL單個(gè)提交,不prepare,使用BaseDAOJdbcexecuteSql方法

    case 2SQL單個(gè)提交,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語(yǔ)句

     * @param values 包含參數(shù)的List,List的每個(gè)元素是一個(gè)Object[]Object[]是一個(gè)單獨(dú)的sql操作所需的參數(shù)

     */

    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 扭曲的鉛筆 閱讀(945) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 亚洲第一视频在线观看免费| 凹凸精品视频分类国产品免费| 亚洲精品视频免费看| 亚洲免费综合色在线视频| 人体大胆做受免费视频| 日韩精品亚洲人成在线观看| 成人免费无码大片a毛片| 9久热精品免费观看视频| 亚洲国产精品综合一区在线| 又大又粗又爽a级毛片免费看| 久草免费福利资源站| 亚洲av永久无码精品秋霞电影秋| 国产成人A亚洲精V品无码| 毛片免费全部播放一级| 日本道免费精品一区二区| 国产成人亚洲综合网站不卡| 亚洲人成图片小说网站| 日韩电影免费在线| 最近免费mv在线电影| 国产免费播放一区二区| 亚洲砖码砖专无区2023 | 亚洲国产成人久久精品99| 无码国产精品一区二区免费16| 国产亚洲日韩在线a不卡| 亚洲日本视频在线观看| 亚洲人成在线播放网站| 四虎永久免费地址在线网站 | 日韩a级毛片免费观看| 无码日韩精品一区二区免费暖暖| 国产午夜亚洲精品不卡| 亚洲一区二区三区无码国产| 久久久久亚洲Av片无码v| 亚洲精品视频免费观看| 免费无码看av的网站| 黄+色+性+人免费| 国产色无码精品视频免费| 瑟瑟网站免费网站入口 | 亚洲一级毛片免费观看| a级毛片高清免费视频| 一级毛片无遮挡免费全部| 亚洲国产无线乱码在线观看|