★★ 讀設定檔、讀資料庫資料哪個效率高?

來源:互聯網
上載者:User

現在正在做項目代碼最佳化工作。

 

對於某些固定資料的獲得方法主要有如下兩種:

(1) 從資料庫(oracle)相應table讀取;

(2) 從設定檔(properties檔案)中讀取(將相應資料寫到txt檔案中準備好,使用時從txt檔案中獲得)

 

 

設定檔:

XXX.properties:

industry+0-I=%:所有行業;A:農、林、牧、漁業;B:採掘業;C:製造業;D:電力、瓦斯及水的生產和供應業;。。

area+0=%:所有地區;11:北京;12:天津;13:河北;14:山西;15:內蒙古;21:遼寧;22:吉林;23:黑龍江;。。。

level+0=0:所有等級;1:AAA;2:AA+;3:AA;4:AA-;5:A+;6:A;7:A-;8:BBB+;9:BBB;10:BBB-;11:BB+;12:BB;13:BB-;14:B;15:CCC

 

 

 

servlet中測試耗時的資料庫讀取、設定檔讀取代碼:

 

  long begin1 = System.currentTimeMillis();
  List<GradeVo> grades = gradeBussiness.getALLGrade();
  List<IndustryVo> industrys = industryBussiness.getAllIndustrys();
  List<AreaVo> areas = areaBussiness.getAllAreas();
  request.setAttribute("grades", grades);
  request.setAttribute("industrys",industrys);
  request.setAttribute("areas", areas);
  long end1 = System.currentTimeMillis();
  long totalTime1 = end1 - begin1;
  System.out.println("取庫共用時:"+totalTime1);
  
  long begin2 = System.currentTimeMillis();
     request.setAttribute("industrySelectStr", XXXXUtil.makeSelect("industry", "industry", "industry+0-I", "%", ""));
     request.setAttribute("areaSelectStr", XXXXUtil.makeSelect("area", "area", "area+0", "%", ""));
     request.setAttribute("companyLevelSelectStr", XXXXUtil.makeSelect("companyLevel", "companyLevel", "level+0", "%", "companyLevelChange()"));
     long end2 = System.currentTimeMillis();
     long totalTime2 = end2 - begin2;
     System.out.println("取設定檔共用時:"+totalTime2);

 

運行結果:

取庫共用時:235
取設定檔共用時:0

 

耗時差別很大!!!

 

沒有關閉tomcat,將再次訪問此servlet:

取庫共用時:266
取設定檔共用時:0

 

注意:

以上讀取資料庫的過程中,每次資料的讀取都進行了jdbc串連、資料查詢擷取、串連關閉(暫時項目沒有使用串連池)。

 

 

結論:

對於某些值固定的資料,“讀取預先寫入到設定檔中的資料速度”優於“讀取資料庫中的資料速度”。

——前提:在設定檔中的資料不是很多的情況下沒問題,至於設定檔資料量達到nM的情況,以後進行測試。

 

 

 

網路資料:

I/0讀寫快還是插入資料庫快

http://www.javaeye.com/problems/30594

    io寫硬碟      
優勢:本地檔案系統,不需要通過jdbc驅動序列化進行網路傳輸,不存在網路問題
劣勢:跟硬碟效能有關,沒有最佳化(當然自己可以封裝,例如:使用記憶體緩衝,然後批量觸發,但這樣會佔用少量記憶體資源,也比較麻煩)

    存資料庫
優勢:如果串連已經存在,用戶端無需關心服務端的處理(cilent發送過去 ->服務端緩衝-〉結束),無需像寫硬碟等待寫入結束。自己負責事情少,檢索方便!
劣勢:網路問題,如果串連不存在,有串連資料庫的開銷

 

 

[精彩] 讀寫檔案不是效率很低的嘛,那麼資料庫為何效率高呢

http://www.chinaunix.net/jh/23/527591.html:


正常情況讀寫檔案系統比資料庫快一到兩個資料級

資料庫的查詢,大量並發的時候可能最浪費時間的是connect和close,資料庫的優勢是體現的大量資料的查詢、統計以及並發讀寫,不是在速度上.

 

以 Oracle 為例
1。讀
使用資料庫有時候比file 要慢
比如說第一次使用某個資料時,Oracle肯定會比直接讀file慢
但是,如果第二次要用到這個資料,Oracle直接從mem裡讀取,這樣就比file要快
2。寫
Oracle對data update / insert 的確是可以延遲寫到磁碟的
它是先在mem裡作修改,再由專門的dbwr 來寫資料到磁碟。
3。個人認為,資料庫和檔案並不存在可比性
用檔案,很難實現sql語句。
但是,使用資料庫會耗用更多的系統資源。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.