熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

構建高性能Oracle運行系統的原則

2013-11-13 22:15:41  來源: Oracle 

  要得到高性能運轉的Oracle數據庫系統首先要做到未雨綢缪即首先要做好系統規模與容量的規劃要做好這兩方面的規劃必須要從三方面考慮

  分別是CPU利用率I/O子系統(主要是磁盤)的使用內存使用

  其中CPU利用率與用戶進程數量有關隨著用戶數量的增加用戶進程數量必然增長所以在選擇CPU時要優先選擇那些主頻高緩存區大的CPU而且要預先對用戶的增長趨勢做好預測為CPU的擴展做好准備

  另外在任何系統中的資源都會由於使用者請求數量的增加而造成等待排隊等待排隊數量越多通常系統的響應速度越慢在這方面I/O子系統的表現最為明顯(網絡子系統與I/O子系統類似因此也有類似表現)據權威測試結果顯示如果對I/O子系統中的某個資源(比如磁盤)的過多訪問造成這種資源的利用率超過其自身極限的%那麼就會造成對這種資源的訪問等待隊列中的排隊數量呈幾何級數增長

  因此為規避這種對I/O系統的過載訪問一般采用RADI陣列技術Oracle的推薦原則是使用RADI這可以做到性能與容錯的完美折中但是價格上比較昂貴如果因為經濟條件的限制可以使用RADI這是最為經濟的一種規劃但是對寫操作的性能較差據成熟經驗除非應用系統的讀寫比例為%/%否則不要使用RADI當然實際標准可能不一樣而且如果I/O非常少RADI也沒有問題

  接下來就是內存使用問題這也是最復雜的方面因為它與操作系統Oracle數據庫實例應用系統本身三方面有關

  其中前兩方面關系更為密切因為Oracle實例在運行時是由一系列後台進程以及這些進程所使用的內存所組成進程所使用的內存就是所謂的系統全局區SGASGA包括固有的兩部分即數據庫高速緩存和重做日志緩沖區還有一部分稱為共享池這部分中有一些必須的池如數據字典緩存池等還有一部分可選池如大池(用於I/O讀寫)等這需要根據系統要提供的功能和服務來進行取捨

  除了SGA還存在PGA即用戶進程所使用的內存空間這部分空間的分配與使用與操作系統和Oracle本身有關因此調整和配置它們也要從這兩方面考慮

  在Oraclei即以後版本中可以通過設定PGA_AGGREGATE_TARGET參數來指定PGA內存大小一般的原則為用物理內存數減去SGA規劃的內存數的剩余部分劃分給PGASGA運行時位於操作系統的共享內存空間中而PGA位於操作系統堆棧段中因此SGA運行時不會被操作系統通過內存交換換出到磁盤而PGA有可能被換出

  對於大部分的主流操作系統來說內存管理都是采用虛擬內存的頁式內存管理這對Oracle性能會造成影響因此要合理調節Oracle盡量避免頁式調度的發生因此我強烈推薦在單一主機上運行Oracle而且只運行Oracle剩下的就是應用系統的優化問題了這也包含兩個方面

  ()程序代碼的編寫

  ()生產數據庫的設計

  首先生產數據庫的結構要設計合理包括冗余字段的規劃消除冗余的規劃索引的建立簇的建立是否使用物化視圖對大數據量的表建立分區以及優化針對數據庫對象的設計(比如塊尺寸的調整表的PCTUSEDPCTFREE選項的調整等)這些都要在設計時更具業務特點進行考慮或者在開發過程中根據業務變化進行修正

  其次程序代碼要進行合理編寫比如檢索語句要進量使用各種手段進行優化(如使用線索技術等對於各種優化規則請參見我的另一篇翻譯文檔《Oracle語句優化規則》)恰當合理的利用存儲過程以及對存儲過程進行優化等這些都要在開發過程中加以注意而且還包括編程語言自身(如:JavaC++等)的優化(比如使用先進算法合理使用語言選用更先進的編譯技術等)這是另外的議題這裡我不做討論

  總之建立一個高性能健壯的Oracle運行系統(也包括其他系統如:DB系統SQLServer系統等)是要由多方面綜合因素決定的必須要在這些方面綜合考慮通盤規劃才可以


From:http://tw.wingwit.com/Article/program/Oracle/201311/18631.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.