DB2性能調(diào)優(yōu)中存在哪些問題,如何破解?
此文章主要向大家描述的是DB2性能調(diào)優(yōu)問題,我們主要是以一問一答的方式對(duì)DB2性能調(diào)優(yōu)中存在的問題進(jìn)行解答,以下就是DB2性能調(diào)優(yōu)問題具體內(nèi)容的描述,希望在你今后的學(xué)習(xí)中會(huì)有所幫助。
硬件環(huán)境:AIX 內(nèi)存(8G) EMC(140G) 本身硬盤大?。?40G)
數(shù)據(jù)結(jié)構(gòu)(表結(jié)構(gòu)可以分為4類):
***類:有300-400張業(yè)務(wù)表(數(shù)據(jù)量***的在100W左右)
第二類:主表有10張左右(數(shù)據(jù)量300W左右,最主要的是一張tdBase表和這張表的子表)
第三類:還有10張索引表(索引表是對(duì)tdBase表中entName進(jìn)行拆分所得,只有4列,數(shù)據(jù)量***的有1000W左右)
第三類:系統(tǒng)表100張左右
現(xiàn)在數(shù)據(jù)庫(kù)結(jié)構(gòu)都設(shè)計(jì)好了,之前是在MS上,現(xiàn)在準(zhǔn)備遷移到db2上,請(qǐng)大家給點(diǎn)建議。主要是查詢性能,最主要的就是索
引表和主表的關(guān)聯(lián)查詢。
表空間應(yīng)該如何進(jìn)行分配?緩沖池的大小?容器要怎么分布?數(shù)據(jù)庫(kù)配置要怎么樣配置,才能達(dá)到***并發(fā)??jī)?nèi)存是主動(dòng)管
理呢,還是需要自己指定?麻煩大家給點(diǎn)建議,謝謝了。
***答案 mdkii
這個(gè)問題比較復(fù)雜。
性能調(diào)優(yōu)分好幾個(gè)層面:
存儲(chǔ)層面,
1、***你的lun要?jiǎng)澐值帽容^合理,如果做raid的話,***一個(gè)raid group里包含更多的盤。
2、一個(gè)container***只是包含一個(gè)完整的raid group,不要讓多個(gè)container競(jìng)爭(zhēng)一個(gè)raid group。
3、數(shù)據(jù)日志應(yīng)該使用單獨(dú)的磁盤或raid group。
操作系統(tǒng)方面:
1、控制你的file cache,不要讓過多的file cache占據(jù)你的內(nèi)存,而導(dǎo)致頻繁的pagesp in和pagesp out,
從而嚴(yán)重的影響你的性能。
2、保證配置了足夠的aioserver。
數(shù)據(jù)庫(kù)層面:
1、如果是9版本建議使用stmm,除非你是非常有經(jīng)驗(yàn)的DB2 工程師。
2、把表分類放到表空間和把表放到同一個(gè)表空間其實(shí)對(duì)性能的影響并不大,但如果索引比較多,建議索引可以使用一個(gè)單獨(dú)的表空間和bufferpool。
3、PREFETCHSIZE ***等于 extentsize * 容器的個(gè)數(shù)。
4、啟動(dòng)主動(dòng)頁(yè)清除
5、啟動(dòng)表空間并行IO
6、如果是smp的機(jī)器,啟用分區(qū)內(nèi)并行。
7、如果可能,對(duì)大表做partition,如果是復(fù)雜維度的查詢,可以將事實(shí)表建成MDC表。
SQL層面:
1、建議對(duì)影響復(fù)雜的SQL,按照db2advis的建議,建立合適的索引。
2、定期使用runstats確保你的統(tǒng)計(jì)信息是***的。
3、對(duì)于仍有性能問題的SQL,使用db2exfmt等工具分析執(zhí)行計(jì)劃,盡量避免查詢計(jì)劃里出現(xiàn)Residual Predicates的字樣。
系統(tǒng)運(yùn)行后,
使用AIX系統(tǒng)工具(topas,vmstat,iostat等),查看你的系統(tǒng)是否正常運(yùn)行。
使用數(shù)據(jù)庫(kù)快照等工具,查看數(shù)據(jù)庫(kù)的buffer 命中率, sort overflow,lock wait 等情況以
確保數(shù)據(jù)庫(kù)正在正常運(yùn)行。