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

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

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

    posts - 31,  comments - 31,  trackbacks - 0

    程序功能:
    使用hibernate+spring將oracle數據庫中的tfile表中的數據抽取到db2數據庫的tfile表,這兩個表的結構相同。(原本要使用一些Spring的特性,但是程序改來改去發現Spring特性一個都沒用上,實際上完全可以由hibernate創建兩個sessionFactory完成)
    測試環境:
    celeron M 1.4/512M/mysql 5.0數據庫
    代碼:

    public void save() {
      Session session
    = fileDAO.getDataSession();
      Session session2
    = fileDAO2.getDataSession();
      Transaction tx 
    =session2.beginTransaction();
      
    int count=0;
      List list 
    =fileDAO.getList(session, count);
      
    while(list.size()!=0)
      
    {
       
    for(int i=0,num =list.size();i<num;i++)
       
    {
        session2.save(list.get(i));
        session.evict(list.get(i));
        
    if(num%50==0)
        
    {
         session2.flush();
         session2.clear();
        }

       }

       count
    = count+500;
       list 
    =fileDAO.getList(session, count);
       
      
    // System.out.println(count);
       
      }

      tx.commit();
      session.close();
      session2.close();
    }

    配置文件:

    <prop key="hibernate.jdbc.batch_size">50</prop>
    <prop key="hibernate.cache.use_second_level_cache">false</prop>

     

    1、為保證不會出現內存溢出
       hibernate.jdbc.batch_size 設為 20-50
       并在代碼中沒隔50個insert后手工清理數據 
         

     if(num%50==0)
        
    {
         session2.flush();
         session2.clear();
        }

    2、為保證減少二級緩存導致的過多的內存開銷關,閉二級緩存
      hibernate.cache.use_second_level_cache 設為false
    3、保證使用長事務,不要在每個插入都事務提交,這樣性能可以有很大幅度的提升(由于原先配的事務沒有正常運行,在初次測試時此程序插入4萬條數據用了12分鐘,使用了長事務后僅為34秒)
    4、使用ScrollableResults(提供了數據庫的游標特性)然后插入的效果好像要優于分批抓取分批插入的效果,(4萬條數據,用ScrollableResult耗時29秒)但網上有人聲稱批量抓取插入的效果要好可能在遠程數據庫的情況下批量抓取的可靠性更高一點的原因。這一點我詢問過公司里做數據庫比較好的人,批量處理數據是要使用游標處理的。就游標而言分為動態游標,靜態游標,動態游標慢于靜態游標,靜態游標慢于靜態查詢,但是如果用分批抓取數據的話就涉及到數據分段截取,為保證每次分段截取時數據的正確性,應該要預先對數據處理,所以批量抽取數據的速度可能會慢一些。以下為使用ScrollableResult的程序
      

    Session session= fileDAO.getDataSession();
      Session session2
    = fileDAO2.getDataSession();
      Transaction tx 
    =session2.beginTransaction();
      ScrollableResults tFiles 
    = session.createQuery(
        
    "from TFile as model ").setCacheMode(CacheMode.IGNORE).scroll(ScrollMode.FORWARD_ONLY);
      
    int count=0;
      
    while(tFiles.next())
      
    {
       session2.save(tFiles.get(
    0));
       
    if(++count%50==0)
        
    {
         session2.flush();
         session2.clear();
        }

      }

      tx.commit();
      session.close();
      session2.close();
    posted on 2007-04-24 19:30 小平 閱讀(1799) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2007年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    framework

    j2me

    java

    linux

    web

    其他

    友情鏈接

    素材

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: AV片在线观看免费| 国产又大又长又粗又硬的免费视频| 亚洲精品午夜久久久伊人| 毛片免费视频观看| 国产99视频精品免费视频76| 久久精品国产亚洲av日韩| 日本无吗免费一二区| 久久久久国产精品免费看| 亚洲日韩国产一区二区三区在线| 亚洲中文字幕成人在线| 99国产精品永久免费视频| 国产人成网在线播放VA免费| 亚洲制服丝袜一区二区三区| 亚洲精品岛国片在线观看| 免费视频专区一国产盗摄| 国产裸体美女永久免费无遮挡| 亚洲综合色7777情网站777| 亚洲日本在线观看视频| 99久久精品日本一区二区免费| 国产久爱免费精品视频| 亚洲中文字幕无码久久| 亚洲精品视频在线| 亚洲av无码专区在线观看素人| 久久久高清免费视频| 未满十八18禁止免费无码网站 | 84pao强力永久免费高清| 在线亚洲精品视频| 亚洲AV一二三区成人影片| 亚洲国产精品无码专区在线观看| 免费看片A级毛片免费看| 亚洲免费视频观看| 免费人成毛片动漫在线播放| 污污视频网站免费观看| 亚洲人成人无码.www石榴| 亚洲成aⅴ人片在线影院八| 国产亚洲精品va在线| 亚洲av成人一区二区三区在线观看| 91香蕉视频免费| 18禁止看的免费污网站| 免费视频精品一区二区三区 | 亚洲成av人片天堂网无码】|