| 導購 | 订阅 | 在线投稿
分享
 
 
 

Oracle數據庫9i在AIX環境下的性能調整

來源:互聯網  2008-06-01 03:22:34  評論

當進程申請的內存超過系統的物理內存總量時,會出現內存訪問沖突的現象,爲了處理這種情況,程序與數據將在內存和硬盤之間進行交換。

控制內存交換操作(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區中。

當進程申請的內存超過系統的物理內存總量時,會出現內存訪問沖突的現象,爲了處理這種情況,程序與數據將在內存和硬盤之間進行交換。 控制內存交換操作(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區中。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有