設(shè)計高性能的Informix數(shù)據(jù)庫運(yùn)用程序
INFORMIX數(shù)據(jù)庫是一被廣泛應(yīng)用的關(guān)系型數(shù)據(jù)庫,如何提高其應(yīng)用性能是大家關(guān)心的話題,特別是隨著數(shù)據(jù)庫中數(shù)據(jù)量與應(yīng)用處理交易量的不斷增多,其運(yùn)行效率問題尤顯突出。
眾所周知,數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能優(yōu)化是一個高度復(fù)雜,異常繁瑣而且涉及面很廣的綜合性工作。面對復(fù)雜的數(shù)據(jù)庫應(yīng)用系統(tǒng)性能調(diào)優(yōu),大家往往感到無從下手。其實對性能調(diào)優(yōu)不外乎從網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)和應(yīng)用程序等方面來考慮。事實上,對網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)進(jìn)行優(yōu)化所獲得的性能提升全部加起來只占數(shù)據(jù)庫應(yīng)用系統(tǒng)性能提升的40%左右,其余的60%系統(tǒng)性能提升全部來自對應(yīng)用程序的優(yōu)化。
本文結(jié)合工作實踐,從INFORMIXONLINE參數(shù)的配置和性能調(diào)整、數(shù)據(jù)庫表創(chuàng)建的方式、索引策略、查詢語句(SELECT)優(yōu)化等方面對INFORMIX數(shù)據(jù)庫應(yīng)用系統(tǒng)的程序設(shè)計和數(shù)據(jù)維護(hù)提出一些優(yōu)化措施。
一、INFORMIXONLINE參數(shù)設(shè)置的優(yōu)化措施
INFORMIX數(shù)據(jù)庫系統(tǒng)參數(shù)性能調(diào)整的優(yōu)劣直接影響INFORMIX數(shù)據(jù)庫運(yùn)行效率。在決定進(jìn)行系統(tǒng)性能調(diào)優(yōu)時,首先應(yīng)制定一個完整的調(diào)優(yōu)方案,先監(jiān)控系統(tǒng)并分析出問題所在,然后根據(jù)分析結(jié)果每次調(diào)整一個參數(shù),再進(jìn)一步監(jiān)控系統(tǒng)查看系統(tǒng)性能有無變化,然后再做近一步的調(diào)節(jié)。其中有一個重要的原則:每次最好只調(diào)節(jié)一個參數(shù)。
數(shù)據(jù)庫系統(tǒng)性能通常與磁盤I/O、CPU、共享內(nèi)存和網(wǎng)絡(luò)四個方面有關(guān)。至于此四個方面在性能調(diào)優(yōu)中孰輕孰重,還要根據(jù)整個系統(tǒng)的實際情況具體問題具體分析。
1、磁盤I/O
對磁盤調(diào)整的原則是降低讀盤次數(shù),極大化每次讀盤數(shù)據(jù)量,數(shù)據(jù)分布均勻,防止瓶頸的發(fā)生。INFORMIXONLINE的磁盤空間應(yīng)采用裸設(shè)備方式(raw device),而不應(yīng)采用經(jīng)過加工的文件空間(cooked filespace),前者比后者處理速度要快得多,且可靠性高。影響磁盤I/O的幾個ONLINE配置參數(shù):
◆ CKPTINTVL:該參數(shù)指定檢查點(diǎn)(CheckPoint)之間的時間間隔。
◆ PHYSFILE:物理日志的大小建議為整個日志空間的25%。即:物理日志空間大?。哼壿嬋罩究臻g大小=1:3
◆ LRUS:該參數(shù)指示共享內(nèi)存緩沖池中設(shè)置的最近最少使用隊列數(shù)目。配置較多的LRU隊列將允許有更多的頁清除器操作,并減少每個LRU隊列的大小。對于單CPU系統(tǒng),INFORMIX建議設(shè)置LRUS參數(shù)為最小值4。對于多CPU系統(tǒng),INFORMIX建議設(shè)置LRUS為最小值4和NUMCPUVPS的取值之中較大的一個。
◆ CLEANERS:該參數(shù)指定執(zhí)行的頁清除線索的數(shù)目。
參考下表:
磁盤個數(shù) INFORMIX推薦的CLEANERS值
<20 磁盤的個數(shù)
20-100 磁盤的個數(shù)/2
>100 磁盤的個數(shù)/4(不超過128)
2、CPU
INFORMIX動態(tài)數(shù)據(jù)庫服務(wù)器對CPU的處理采用先進(jìn)的多進(jìn)程多線索機(jī)制,即使用了VP(virtual processer虛處理器)去管理物理CPU資源,均衡CPU負(fù)載,其中對性能影響較大的是CPUVP。我們可以把CPUVP看成是搭構(gòu)在物理CPU之上的由INFORMIX動態(tài)服務(wù)器自己管理的虛CPU,因此物理CPU對用戶而言是透明的。
CPUVP是一個多線索進(jìn)程,除了沒有任務(wù)做,例如就緒隊列中沒有等待執(zhí)行的線索或操作系統(tǒng)強(qiáng)迫CPUVP讓出CPU給其它進(jìn)程,它將一直在CPU上執(zhí)行。
為優(yōu)化吞吐量,將NUMCPUVPS設(shè)置為能夠處理承接任務(wù)的最小的數(shù),這個數(shù)目小于或等于系統(tǒng)中可利用的CPU數(shù),建議不要將CPUVP數(shù)設(shè)置成大于可用CPU數(shù)目。通常對于聯(lián)機(jī)事務(wù)處理(OLTP)應(yīng)用:NUMCPUVPS=實際CPU數(shù)量-1(對于單CPU系統(tǒng),該參數(shù)應(yīng)為1);對于聯(lián)機(jī)分析處理(OLAP)應(yīng)用:NUMCPUVPS=實際CPU數(shù)量。
如果CPUVP不能承受要執(zhí)行的任務(wù),這就表示需要提高CPU性能來解決問題。只有存在另外的處理器,才能通過增加CPUVP來解決問題。也可以從系統(tǒng)上移走其它任務(wù),為虛處理器釋放CPU周期,從而改善性能。
增加CPUVP的數(shù)目而不增加CPU資源只會使問題更嚴(yán)重,產(chǎn)生更多的CPU周期競爭,這樣操作系統(tǒng)要有更多的工作來做均衡,爭奪CPU時間的CPUVP使其負(fù)擔(dān)增加。結(jié)果,上下文切換增加,這不僅消耗時間而且要使用更多的CPU。 #p#page_title#e#
文章來源:http://www.syjcy.cn