<b>前言</b>
最近hyddd一直看Oracle的資料,今天特地總結一下這段時間了解到的<b>關于Oracle性能優化的下手點</b>。
<b>一</b><b>.</b><b>資料庫優化的方向</b>
1.程式設計(這點最重要,如果程式本身設計有問題,再怎麼進行下面的優化都是徒勞的。)
2.作業系統優化
3.硬體優化
4.資料庫優化
5.SQL語句優化
<b>二</b><b>.</b><b>硬體優化</b>
這裡涉及到的硬體主要有:硬碟,記憶體。
1.硬碟的讀寫速度:建議增加硬碟的數量,進而增加每秒的并發操作。
2.記憶體大小。
<b>三</b><b>.</b><b>資料庫優化</b>
<a href="http://images.cnblogs.com/cnblogs_com/hyddd/WindowsLiveWriter/Oracle_14638/clip_image001_2.png"></a>
以上是Oracle 9i的體系結構,關于Oracle資料庫的優化,很大程度上圖有關。
<b>1.</b><b>根據資料庫的使用方式得出合理的優化政策</b>
(1)OLTP:連機事務處理。
需要實時處理大量請求,而每次處請求的資料量都是很小的。OLTP是傳統的關系型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。
性能好壞的重要名額:響應時間與請求處理并發數。
(2)OLAP:聯機分析處理。
可以簡單地了解為在海量資料中得出統計/綜合資訊,是資料倉庫的主要應用。做OLAP應用的資料庫,資料量通常量非常大。和OLTP不同,OLAP應用的并發處理量是很低的,是以基本不用考慮并發問題。而在處理資料量方面,OLAP每次操作所需要處理的資料量通常都是非常大的,這點也和OLTP相反。
性能好壞的重要名額:查詢大量資料的速度。
由于OLTP和OLAP是兩個不同應用方向,是以在優化資料庫時應采取不同的優化政策。
<b>2.</b><b>記憶體配置設定比例:2:1:1</b>
記憶體配置設定的較佳方案:SGA占50%的實體記憶體,PGA和作業系統各占25%的實體記憶體,當然這也不是絕對的,但是SGA占的實體記憶體不能超過75%,最多隻能占70%,否則Oracle可能會出現各種的異常。
<b>3.SGA</b><b>中各個POOL</b><b>的記憶體配置設定</b>
(1)Shared Pool:要配置設定多少記憶體不定,隻要滿足以下兩個條件即可:
-Lib Cache的命中率>98%
-Data Dictionary Cache的命中率>85%
(2)Large Pool
-專用伺服器:100-200M
-共享伺服器:Session * (Sort_area_size + 2)
(3)Java Pool:無需使用,一般不配置設定空間。
(4)Redo Log Buffer Cache:小于5M,因為它的資訊非常重要,應盡快把緩存資料寫到檔案中。
(5)DB_Buffer_Cache:盡量大。
<b>4.</b><b>在Oracle 10g</b><b>中,如果我們定義了SGA_MAX_SIZE</b><b>後,其實我們通過SGA_TARGET</b><b>讓Oracle</b><b>自動調整SGA的記憶體配置設定。</b>
<b>5.Redo log files</b><b>,Data files</b><b>,Archive </b><b>log files</b><b>盡量放在不同的磁盤上,以均衡I/O</b><b>。</b>特别是Redo Log files和Archive log files。
<b>6.Undo Segment</b><b>容量大小要符合實際應用,不能太小。</b>
<b>7.</b><b>熱點檔案特殊處理</b>
(1)分開存放Index Segment和Data Segment。
(2)使用分區表。
<b>8.</b><b>索引(Index</b><b>)問題</b>
(1)适當使用BTREE,BITMAP以及反向索引:不同索引适用于不同的表,設定索引之前要考慮這個問題。
(2)一個表的索引數最多不要超過5個,否則可能影響性能。
(3)定期重構索引。(單邊樹索引重構時可考慮使用反向索引降低索引樹高度)
(4)注意索引是否失效,這一般是比較爛的SQL語句引起的問題。
<b>9.</b><b>盡量減少“全表掃描操作” & “</b><b>排序操作”</b>
<b>10.</b><b>看執行計劃有助于各位DBA</b><b>找出性能問題。</b>
<b></b>
<b>四</b><b>.SQL</b><b>語句優化</b>
<b>1.</b><b>通過v$librarycache</b><b>了解命中率,這和3.1</b><b>中提到的Shared Pool</b><b>有關系,避免重複解析SQL</b><b>語句,有助于提高資料庫性能。</b>
<b></b>
<b>2.</b><b>使用“物化視圖”提高查詢性能。</b>
<b>後記</b>
本文列了一些Oracle性能優化要點,如果大家要進行Oracle基礎優化時,可參考以上要點。
如有錯漏,請各位指出。
本文轉自hyddd部落格園部落格,原文連結:http://www.cnblogs.com/hyddd/archive/2009/08/30/1556939.html,如需轉載請自行聯系原作者。