oracle for aix記憶體調整

anycall2010發表於2008-06-26

記憶體訪問的衝突出現在當程式申請的記憶體超過系統的實體記憶體總量時,為了處理這種情況,系統將程式與資料在記憶體和硬碟間進行交換。

控制記憶體交換操作(Paging)
大量的記憶體交換操作會極大地影響系統的效能,尤其是在當資料庫檔案建立在檔案系統上時(JFS and JFS2)。在這種情況下經常訪問的資料,即在SGA中存在,也同樣在檔案的快取中存在。這種相同的資料在記憶體中快取兩次的情況,會降低記憶體的使用效率,從而使記憶體頻繁進行交換操作,造成系統的I/O瓶頸,降低整個系統的效能。

調整AIX上的檔案快取
在AIX上,可以通過vmtune命令中的MINPERM和MAXPERM引數,調整系統檔案快取來控制記憶體交換操作,MINPERM和MAXPERM引數的調整應遵照以下的原則:

當記憶體中的檔案快取頁在MINPERM以下時,記憶體頁交換演算法同時交換檔案快取頁和程式頁(computational pages)
當記憶體中的檔案快取頁在MAXPERM以上時,記憶體頁交換演算法只交換檔案快取頁。
當記憶體中的檔案快取頁在MINPERM和MAXPERM之間時,記憶體頁交換演算法通常只交換檔案快取頁,但如果檔案快取頁的交換率大於程式頁時,程式頁也同樣被交換。
MINPERM和MAXPERM引數的預設值
MINPERM = ((number of memory page) - 1024)*0.2
MAXPERM = ((number of memory page) - 1024)*0.8
可以用以下命令將MINPERM設為5%的記憶體頁,而MAXPERM設為20%的記憶體頁。

# vmtune -p 5 -P 20

預設值分別為20%和80%。

在Oracle資料庫應用的環境下,可以將MINPERM和MAXPERM分別設為5%和20%甚至更小,從而使記憶體更多地被用於Oracle的SGA而不是系統的檔案快取。

配置足夠的交換區
如果交換區空間不足會造成系統響應速度變慢甚至掛起,交換區的大小取決於系統記憶體的大小以及應用程式對記憶體的需求。在AIX上可以動態增加交換區,也可以用lsps命令察看交換區的使用狀況,以及用vmstat監視系統記憶體頁交換的操作。

通常交換區的大小需要大於系統的實際記憶體,這主要取決於應用程式對記憶體的需求。使用者需要監視交換區的使用狀況,根據需要增加交換區的空間。對於執行Oracle Application或Oracle development tools可能需要較大的交換空間。

排定記憶體需求優先順序
如果系統的記憶體不足,就需要對程式對記憶體使用的優先順序進行排序,將記憶體優先分配給能獲得更好的系統總體效能的程式。通常的順序如下:
1. AIX和Oracle的核心程式
2. 應用程式程式
3. Oracle的Redo log buffer
4. PGA和共享池(shared pool)
5. Oracle的資料快取(block buffer cache)
例如:當你查詢Oracle的動態效能表時發現共享池(shared pool)和資料快取區(block buffer cache)都需要配置更多地記憶體,而你的系統中的空閒記憶體有限,那麼將空閒記憶體分配給共享池比分配給資料快取區有更好的效果。

資料塊(Database block)的大小
使用者可以選擇Oracle資料庫中資料塊的大小以獲得更好的效能,在AIX上通過設定DB_BLOCK_SIZE初始化引數,選擇從2KB到32KB的資料塊,預設值是4KB。如果資料檔案在檔案系統上,則Oracle資料塊的大小應為檔案系統資料塊4KB的整倍數。如果資料檔案在系統裸裝置上,則Oracle資料塊的大小應為系統資料塊512B的整倍數。

Oracle公司推薦,對於線上交易的應用(OLTP)或混合型的應用環境,採用2KB或4KB的資料塊。對於BI的應用或決策支援系統(DSS),採用更大的資料塊,如8KB,16KB或32KB。

調整日誌歸檔快取(Log Archive Buffers)
配置較大的快取可以提高資料庫日誌歸檔的速度,但注意不要對整個系統的效能產生影響。使用者可以將LOG_ARCHIVE_BUFFER_SIZE增加到128KB (其預設值為4KB),會提高0-20%的資料庫歸檔操作的效能。

調整SGA的大小
對於Oracle SGA來說,被系統的記憶體管理程式換出到交換區上,肯定是使用者最不願意見到的情況,這就需要系統配置有足夠的記憶體。對於大量使用者同時線上的應用,建議配置較大的SGA區。對於SGA影響最大的引數是DB_BLOCK_BUFFERS和SHARED_POOL_SIZE。增大這兩個引數,取決於使用者希望分配給SGA記憶體的大小,同時,增大這兩個引數也會造成CPU的利用率提高。

小結
合理的記憶體配置,是Oracle資料庫效能調整的重要方面,其根本的目標是,首先儘量避免系統記憶體頁的交換操作,然後儘量將應用程式經常用到的資料快取在系統的SGA區中。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8334342/viewspace-366054/,如需轉載,請註明出處,否則將追究法律責任。

相關文章