㈠ Oracle9i在AIX上的性能調整--內存篇
內存訪問的沖突出現在當進程申請的內存超過系統的物理內存總量時 為了處理這種情況 系統將程序與數據在內存和硬碟間進行交換控制內存交換操作(Paging) 大量的內存交換操作會極大地影響系統的性能 尤其是在當資料庫文件創建在文件系統上時(JFS and JFS ) 在這種情況下經常訪問的數據 即在SGA中存在 也同樣在文件的緩存中存在 這種相同的數據在內存中緩存兩次的情況 會降低內存的使用效率 從而使內存頻繁進行交換操作 造成系統的I/O瓶頸 降低整個系統的性能
調整AIX上的文件緩存 在AIX上 可以通過vmtune命令中的MINPERM和MAXPERM參數 調整系統文件緩存來控制內存交換操作 MINPERM和MAXPERM參數的調整應遵照以下的原則
當內存中的文件緩存頁在MINPERM以下時 內存頁交換演算法同時交換文件緩存頁和程序頁(putational pages) 當內存中的文件緩存頁在MAXPERM以上時 內存頁交換演算法只交換文件緩存頁 當內存中的文件緩存頁在MINPERM和MAXPERM之間時 內存頁交換演算法通常只交換文件緩存頁 但如果文件緩存頁的交換率大於程序頁時 程序頁也同樣被交換 MINPERM和MAXPERM參數的預設值MINPERM = ((number of memory page) )* MAXPERM = ((number of memory page) )* 可以用以下命令將MINPERM設為 %的內存頁 而MAXPERM設為 %的內存頁
# vmtune p P
預設值分別為 %和 %
在Oracle資料庫應用的環境下 可以將MINPERM和MAXPERM分別設為 %和 %甚至更小 從而使內存更多地被用於Oracle的SGA而不是系統的文件緩存
配置足夠的交換區 如果交換區空間不足會造成系統響應速度變慢甚至掛起 交換區的大小取決於系統內存的大小以及應用程序對內存的需求 在AIX上可以動態增加交換區 也可以用lsps命令察看交換區的使用狀況 以及用vmstat監視系統內存頁交換的操作
通常交換區的大小需要大於系統的實際內存 這主要取決於應用程序對內存的需求 用戶需要監視交換區的使用狀況 根唯局據需要增加交換區的空間 對於運行Oracle Application或Oracle development tools可能需要較大的交換空間
排定內存需求優先順序 如果系統的內存不足 就需要對進悉山搜程對內存使用的優先順序進行排序 將內存優先分配給能獲得更好的系統總體性能的進程 通常的順序如下 AIX和Oracle的核心進程 應用程序進程 Oracle的Redo log buffer PGA和共享池(shared pool) Oracle的數據緩存(block buffer cache)例如 當你查詢Oracle的動態性能表時發現共享池(shared pool)和數據緩存區(block buffer cache)都需要配置更多地內存 而你的系統中的空閑內存有限 那麼將空閑內存分配給共享池比分配給數據緩存區有更好的效果
數據塊(Database block)的大小 用戶可以選擇Oracle資料庫中數據塊的大小以獲得更好的性能 在AIX上通過設置DB_BLOCK_SIZE初始化參數 選擇從 KB到 KB的數據塊 預設值是 KB 如果數據文件在文件系統上 則Oracle數據塊的大小應為文件系統數據塊 KB的整倍數 如果數據文件在系統裸設備上 則Oracle數據塊的大小應為系統數據塊 B的整倍數
Oracle公司推薦 對於在線交易的應用(OLTP)或混合型的應用環境 採用 KB或 KB的數據塊 對於BI的應用或決策支持系統(DSS) 採用更大的數據塊 如 KB KB或 KB
調整日誌歸檔緩存(Log Archive Buffers) 配置較大的緩存可以提高資料庫日誌歸檔的速度 但注意不要對整個系統的性能產生影響 用戶可以將LOG_ARCHIVE_BUFFER_SIZE增加到 KB (其預設值為 KB) 會提睜歷高 %的資料庫歸檔操作的性能
調整SGA的大小 對於Oracle SGA來說 被系統的內存管理程序換出到交換區上 肯定是用戶最不願意見到的情況 這就需要系統配置有足夠的內存 對於大量用戶同時在線的應用 建議配置較大的SGA區 對於SGA影響最大的參數是DB_BLOCK_BUFFERS和SHARED_POOL_SIZE 增大這兩個參數 取決於用戶希望分配給SGA內存的大小 同時 增大這兩個參數也會造成CPU的利用率提高
lishixin/Article/program/Oracle/201311/16571