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