oracle數據庫性能優化 - 降低IO


   影響到oracle性能的因素主要可以從硬件和軟件兩個方面划分,本文通過對oracle數據庫架構的分析,
提出從硬件方面OLTP系統優化oracle數據庫性能的方法,不足之處歡迎拍磚。
  oracle數據庫物理存儲架構:
  oracle數據庫物理文件增長情況:
   Oracle archived REDO log files增長快,說明redo log寫入很頻繁。
從實際大數據量和高性能OLTP應用系統性能測試發現,磁陣IO是限制系統性能的瓶頸,因此降低IO是oracle數據庫優化的關鍵,
結合oracle數據庫物理存儲架構圖、數據庫物理文件增長情況和實際測試發現,給磁陣IO帶來很大負荷的是redo log文件、數據文件、索引文件的讀寫三個方面,
並且當數據量、性能和持續壓力時間都達到一定的量時,這三者產生的IO負荷相當,因此降低磁盤IO的最終目標也就是降低這三類文件的IO,
通過將oracle的redo log文件、數據文件、索引文件都建立到內存盤上的實際測試結果表明,采用這種幾乎零IO的模式很大程度的提高了oracle的性能,
基於以上分析,可以對oracle數據庫的IO做以下優化:
1 固態硬盤存儲redo log,提高redo log的寫入速度,
  從實際運用的角度看,由於內存盤的易失性,把redo log文件建立在內存盤上是不安全的,再考察redo log文件具有大小穩定,一般在2到3個G之間的特性,因此把redo log文件建立在固態硬盤上是個不錯的選擇
2 由於內存足夠大,因此將臨時表空間建立在內存盤上,對於統計、大數據量查詢、大數據量sql運算(比如:group by、sum等)的操作,
  需要大量臨時表空間存儲臨時數據,這些臨時數據就直接存儲到內存上了,消除了oracle的大讀取和大運算產生的臨時IO
3 由於索引具有可以根據數據文件重建,不怕丟失的特性,
  把索引文件建在臨時文件系統上,oracle每次啟動時重建索引,這樣平時的讀寫操作就不會產生索引IO,索引的更新和讀取都在內存上進行,
  系統由於各種原因出現重啟時,僅在重啟時重建一次索引
本文觀點基於目前系統內存都非常大(一般都是幾十G甚至以上)的情況下所做的優化,
基於以上優化,把影響oracle IO的三大因素去掉了兩大因素,因此性能上有望達到倍增的效果。
實驗環境:
由於本文所需測試均是從內存盤使用方面的優化性測試,因此有一台內存較大cpu稍微好一點的機器就足以做相關測試了。
遺留問題:
 1 每次重啟數據庫時重建oracle索引的代價是多少,應用能否接受?
 2 redo log文件是否還有別的更加快速的存取辦法?更快的方法安全性怎么樣?
名詞解釋:
內存盤    :參見百度百科的解釋“linux tmpfs是一種基於內存的文件系統,它和虛擬磁盤ramdisk比較類似像,但不完全相同,和ramdisk一樣,tmpfs可以使用RAM,但它也可以使用swap分區來存儲。而且傳統的ramdisk是個塊設備,要用mkfs來格式化它,才能真正地使用它;而tmpfs是一個文件系統,並不是塊設備,只是安裝它,就可以使用了。tmpfs是最好的基於RAM的文件系統。”
            我沒有查到關於unix操作系統的臨時文件系統的說明,但是unix系統通常都支持內存盤(ramdisk),可以用來代替tmpfs。
            http://baike.baidu.com/view/753453.htm          
            http://baike.baidu.com/view/1511292.htm
固態硬盤  :固態硬盤(Solid State Disk、IDE FLASH DISK)用固態電子存儲芯片陣列而制成的硬盤,由控制單元和存儲單元(FLASH芯片)組成。
            http://baike.baidu.com/view/723957.htm
            http://www.pcpop.com/doc/0/683/683347_all.shtml
傳統硬盤  :硬盤(港台稱之為硬碟,英文名:Hard Disc Drive 簡稱HDD 全名 溫徹斯特式硬盤)是電腦主要的存儲媒介之一,由一個或者多個鋁制或者玻璃制的碟片組成。這些碟片外覆蓋有鐵磁性材料。
            http://baike.baidu.com/view/4480.htm
redo log  :redo/undo log文件,重做/撤銷日志,Oracle archived REDO log files是對red/undo log的備份
            http://baike.baidu.com/view/3084737.htm
data files:數據文件,每一個ORACLE數據庫有一個或多個物理的數據文件(data file)。一個數據庫的數據文件包含全部數據庫數據
            http://baike.baidu.com/view/702978.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM