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


















