文章詳情頁
構建高性能Oracle運行系統(tǒng)的原則
瀏覽:3日期:2023-11-19 13:24:56
要得到高性能運轉的Oracle數(shù)據(jù)庫系統(tǒng),首先要做到未雨綢繆,即首先要做好系統(tǒng)規(guī)模與容量的規(guī)劃,要做好這兩方面的規(guī)劃,必須要從三方面考慮: 分別是:CPU利用率,I/O子系統(tǒng)(主要是磁盤)的使用,內存使用。 其中CPU利用率與用戶進程數(shù)量有關,隨著用戶數(shù)量的增加,用戶進程數(shù)量必然增長,所以在選擇CPU時,要優(yōu)先選擇那些主頻高緩存區(qū)大的CPU,而且要預先對用戶的增長趨勢做好猜測,為CPU的擴展做好預備; 另外在任何系統(tǒng)中的資源都會由于使用者請求數(shù)量的增加而造成等待排隊,等待排隊數(shù)量越多,通常系統(tǒng)的響應速度越慢,在這方面I/O子系統(tǒng)的表現(xiàn)最為明顯(網(wǎng)絡子系統(tǒng)與I/O子系統(tǒng)類似,因此也有類似表現(xiàn)),據(jù)權威測試結果顯示,假如對I/O子系統(tǒng)中的某個資源(比如磁盤)的過多訪問,造成這種資源的利用率超過其自身極限的80%,那么就會造成對這種資源的訪問等待隊列中的排隊數(shù)量呈幾何級數(shù)增長。 因此為規(guī)避這種對I/O系統(tǒng)的過載訪問,一般采用RADI陣列技術,Oracle的推薦原則是使用RADI10,這可以做到性能與容錯的完美折中,但是價格上比較昂貴。假如因為經(jīng)濟條件的限制,可以使用RADI5,這是最為經(jīng)濟的一種規(guī)劃,但是對寫操作的性能較差,據(jù)成熟經(jīng)驗除非應用系統(tǒng)的讀寫比例為90%/10%,否則不要使用RADI5,當然實際標準可能不一樣,而且假如I/O非常少,RADI5也沒有問題。 接下來就是內存使用問題,這也是最復雜的方面,因為它與操作系統(tǒng),Oracle數(shù)據(jù)庫實例,應用系統(tǒng)本身三方面有關。 其中前兩方面關系更為密切,因為Oracle實例在運行時是由一系列后臺進程以及這些進程所使用的內存所組成,進程所使用的內存就是所謂的系統(tǒng)全局區(qū)SGA,SGA包括固有的兩部分,即數(shù)據(jù)庫高速緩存和重做日志緩沖區(qū),還有一部分稱為共享池,這部分中有一些必須的池如:數(shù)據(jù)字典緩存池等,還有一部分可選池如:大池(用于I/O讀寫)等,這需要根據(jù)系統(tǒng)要提供的功能和服務來進行取舍。 除了SGA還存在PGA,即用戶進程所使用的內存空間。這部分空間的分配與使用,與操作系統(tǒng)和Oracle本身有關,因此調整和配置它們也要從這兩方面考慮。 在Oracle9i即以后版本中,可以通過設定PGA_AGGREGATE_TARGET參數(shù)來指定PGA內存大小,一般的原則為用物理內存數(shù)減去SGA規(guī)劃的內存數(shù)的剩余部分劃分給PGA。SGA運行時位于操作系統(tǒng)的共享內存空間中,而PGA位于操作系統(tǒng)堆棧段中,因此SGA運行時不會被操作系統(tǒng)通過內存交換換出到磁盤,而PGA有可能被換出。 對于大部分的主流操作系統(tǒng)來說,內存治理都是采用虛擬內存的頁式內存治理,這對Oracle性能會造成影響,因此要合理調節(jié)Oracle盡量避免頁式調度的發(fā)生。因此我強烈推薦在單一主機上運行Oracle,而且只運行Oracle。剩下的就是應用系統(tǒng)的優(yōu)化問題了,這也包含兩個方面:(1)程序代碼的編寫;(2)生產(chǎn)數(shù)據(jù)庫的設計; 首先生產(chǎn)數(shù)據(jù)庫的結構要設計合理,包括冗余字段的規(guī)劃、消除冗余的規(guī)劃、索引的建立,簇的建立,是否使用物化視圖,對大數(shù)據(jù)量的表建立分區(qū),以及優(yōu)化針對數(shù)據(jù)庫對象的設計(比如塊尺寸的調整、表的PCTUSED,PCTFREE選項的調整等),這些都要在設計時更具業(yè)務特點進行考慮,或者在開發(fā)過程中根據(jù)業(yè)務變化進行修正; 其次程序代碼要進行合理編寫,比如檢索語句要進量使用各種手段進行優(yōu)化(如使用線索技術等,對于各種優(yōu)化規(guī)則,請參見我的另一篇翻譯文檔《Oracle語句優(yōu)化規(guī)則》),恰當合理的利用存儲過程,以及對存儲過程進行優(yōu)化等,這些都要在開發(fā)過程中加以注重。而且還包括編程語言自身(如:Java,C++等)的優(yōu)化(比如使用先進算法,合理使用語言,選用更先進的編譯技術等),這是另外的議題,這里我不做討論。 總之建立一個高性能,健壯的Oracle運行系統(tǒng)(也包括其他系統(tǒng)如:DB2系統(tǒng),SQLServer系統(tǒng)等),是要由多方面綜合因素決定的,必須要在這些方面綜合考慮,通盤規(guī)劃才可以。
標簽:
Oracle
數(shù)據(jù)庫
排行榜
