Oracle 9i在AIX上相關(guān)的性能調(diào)整
今天我們要和大家一起討論的是Oracle 9i在AIX上的相關(guān)的性能調(diào)整,在內(nèi)存訪問中的沖突的出現(xiàn),當(dāng)進(jìn)程申請的相關(guān)內(nèi)存超過了系統(tǒng)里的物理內(nèi)存總量時(shí),為了處理這種情況,系統(tǒng)將程序與數(shù)據(jù)在內(nèi)存和硬盤間進(jìn)行交換。
控制內(nèi)存交換操作(Paging)
大量的內(nèi)存交換操作會(huì)極大地影響系統(tǒng)的性能,尤其是在當(dāng)數(shù)據(jù)庫文件創(chuàng)建在文件系統(tǒng)上時(shí)(JFS and JFS2)。在這種情況下經(jīng)常訪問的數(shù)據(jù),即在SGA中存在,也同樣在文件的緩存中存在。這種相同的數(shù)據(jù)在內(nèi)存中緩存兩次的情況,會(huì)降低內(nèi)存的使用效率,從而使內(nèi)存頻繁進(jìn)行交換操作,造成系統(tǒng)的I/O瓶頸,降低整個(gè)系統(tǒng)的性能。
Oracle 9i在AIX上的相關(guān)的性能調(diào)整
Oracle 9i在AIX上,可以通過vmtune命令中的MINPERM和MAXPERM參數(shù),調(diào)整系統(tǒng)文件緩存來控制內(nèi)存交換操作,MINPERM和MAXPERM參數(shù)的調(diào)整應(yīng)遵照以下的原則:
當(dāng)內(nèi)存中的文件緩存頁在MINPERM以下時(shí),內(nèi)存頁交換算法同時(shí)交換文件緩存頁和程序頁(computational pages)。
當(dāng)內(nèi)存中的文件緩存頁在MAXPERM以上時(shí),內(nèi)存頁交換算法只交換文件緩存頁。
當(dāng)內(nèi)存中的文件緩存頁在MINPERM和MAXPERM之間時(shí),內(nèi)存頁交換算法通常只交換文件緩存頁,但如果文件緩存頁的交換率大于程序頁時(shí),程序頁也同樣被交換。
MINPERM和MAXPERM參數(shù)的缺省值:
- MINPERM = ((number of memory page) - 1024)*0.2
- MAXPERM = ((number of memory page) - 1024)*0.8
可以用以下命令將MINPERM設(shè)為5%的內(nèi)存頁,而MAXPERM設(shè)為20%的內(nèi)存頁。
# vmtune -p 5 -P 20 缺省值分別為20%和80%。
在Oracle數(shù)據(jù)庫應(yīng)用的環(huán)境下,可以將MINPERM和MAXPERM分別設(shè)為5%和20%甚至更小,從而使內(nèi)存更多地被用于Oracle的SGA而不是系統(tǒng)的文件緩存。
配置足夠的交換區(qū)
如果交換區(qū)空間不足會(huì)造成系統(tǒng)響應(yīng)速度變慢甚至掛起,交換區(qū)的大小取決于系統(tǒng)內(nèi)存的大小以及應(yīng)用程序?qū)?nèi)存的需求。Oracle 9i在AIX上可以動(dòng)態(tài)增加交換區(qū),也可以用lsps命令察看交換區(qū)的使用狀況,以及用vmstat監(jiān)視系統(tǒng)內(nèi)存頁交換的操作。
通常交換區(qū)的大小需要大于系統(tǒng)的實(shí)際內(nèi)存,這主要取決于應(yīng)用程序?qū)?nèi)存的需求。用戶需要監(jiān)視交換區(qū)的使用狀況,根據(jù)需要增加交換區(qū)的空間。對于運(yùn)行Oracle Application或Oracle development tools可能需要較大的交換空間。
排定內(nèi)存需求優(yōu)先級
如果系統(tǒng)的內(nèi)存不足,就需要對進(jìn)程對內(nèi)存使用的優(yōu)先級進(jìn)行排序,將內(nèi)存優(yōu)先分配給能獲得更好的系統(tǒng)總體性能的進(jìn)程。通常的順序如下:
1. AIX和Oracle的核心進(jìn)程
2. 應(yīng)用程序進(jìn)程
3. Oracle的Redo log buffer
4. PGA和共享池(shared pool)
5. Oracle的數(shù)據(jù)緩存(block buffer cache)
例如:當(dāng)你查詢Oracle的動(dòng)態(tài)性能表時(shí)發(fā)現(xiàn)共享池(shared pool)和數(shù)據(jù)緩存區(qū)(block buffer cache)都需要配置更多地內(nèi)存,而你的系統(tǒng)中的空閑內(nèi)存有限,那么將空閑內(nèi)存分配給共享池比分配給數(shù)據(jù)緩存區(qū)有更好的效果。
數(shù)據(jù)塊(Database block)的大小
用戶可以選擇Oracle數(shù)據(jù)庫中數(shù)據(jù)塊的大小以獲得更好的性能,Oracle 9i在AIX上通過設(shè)置DB_BLOCK_SIZE初始化參數(shù),選擇從2KB到32KB的數(shù)據(jù)塊,缺省值是4KB。如果數(shù)據(jù)文件在文件系統(tǒng)上,則Oracle數(shù)據(jù)塊的大小應(yīng)為文件系統(tǒng)數(shù)據(jù)塊4KB的整倍數(shù)。如果數(shù)據(jù)文件在系統(tǒng)裸設(shè)備上,則Oracle數(shù)據(jù)塊的大小應(yīng)為系統(tǒng)數(shù)據(jù)塊512B的整倍數(shù)。
Oracle公司推薦,對于在線交易的應(yīng)用(OLTP)或混合型的應(yīng)用環(huán)境,采用2KB或4KB的數(shù)據(jù)塊。對于BI的應(yīng)用或決策支持系統(tǒng)(DSS),采用更大的數(shù)據(jù)塊,如8KB,16KB或32KB。
調(diào)整日志歸檔緩存(Log Archive Buffers)
配置較大的緩存可以提高數(shù)據(jù)庫日志歸檔的速度,但注意不要對整個(gè)系統(tǒng)的性能產(chǎn)生影響。用戶可以將LOG_ARCHIVE_BUFFER_SIZE增加到128KB (其缺省值為4KB),會(huì)提高0-20%的數(shù)據(jù)庫歸檔操作的性能。
調(diào)整SGA的大小
對于Oracle SGA來說,被系統(tǒng)的內(nèi)存管理程序換出到交換區(qū)上,肯定是用戶最不愿意見到的情況,這就需要系統(tǒng)配置有足夠的內(nèi)存。對于大量用戶同時(shí)在線的應(yīng)用,建議配置較大的SGA區(qū)。對于SGA影響***的參數(shù)是DB_BLOCK_BUFFERS和SHARED_POOL_SIZE。增大這兩個(gè)參數(shù),取決于用戶希望分配給SGA內(nèi)存的大小,同時(shí),增大這兩個(gè)參數(shù)也會(huì)造成CPU的利用率提高。
【編輯推薦】