一、規則
1.確保有足夠的磁盤(每個 CPU 有 6-10 個磁盤纔是一個好的開端)。
每個表空間的容器應 該跨越所有可用的磁盤。
有些表空間,例如 SYSCATSPACE 以及那些表數量不多的表空間,
不需要展開到所有磁盤上, 而那些具有大型用戶或臨時表的表
空間則應該跨越所有磁盤。( 表空間)。
2.緩衝池應該佔用可用內存的大約 75% (OLTP) 或 50% (OLAP)( 緩衝池)。
3.應該對所有表執行 runstats,包括系統編目表( Runstats)。
4.使用 Design Advisor 爲 SQL 工作負載推薦索引和檢查索引( Design Advisor)。
5.使用 Configuration Advisor 爲應用程序環境配置數據庫管理器和數據庫 ( Configuration Advisor)。
6.日誌記錄應該在一個獨立的高速驅動器上進行,
該驅動器由 NEWLOGPATH 數據庫配置參數指定( Experimenting)。
7.通過頻繁的提交可以增加併發性( SQL 語句調優)。
8.應該增加 SORTHEAP,以避免排序溢出( DBM 和 DB 配置)。
9.對於系統編目表空間和臨時表空間,表空間類型應該爲 SMS,而對於其他表空間,
表空間類型應爲 DMS( raw device 或者是文件)。
運行 db2empfa,以便支持用於 SMS 表空間的多頁(multi-page )文件的空間分配。
這將允許 SMS 表空間一次增長一個區段(Extend),而不是一頁,
從而可以加快那些大型的插入操作和溢出磁盤的排序操作( 表空間)。
10.對於重複的語句,使用參數標記 ( SQL 語句調優)。
二、參數設置
1)BUFFPAGE:數據緩衝池,默認250*4K太小,需要修改百兆級.
2)LOGBUFSZ:日誌緩衝區,默認8*4K太小,改爲1024*4K足夠了.
3)LOGFILSZ:日誌文件大小,默認1000*4K太小,修改爲10240左右
4)MINCOMMIT:組提交數,默認爲1即可,
當運行commit命令時,查詢必須等待日誌緩衝區數 據寫入磁盤後才能進行,
在發生許多較小的併發事務中,頻繁把少量的日誌寫入磁盤可能導致IO浪費
可以設置此參數大於1,這樣做可能會對某些應用程序造成更長的延遲時間
公式:mincommit=每秒鐘完成事務數/10.
5)LOCKLIST:鎖列表最大存儲量,默認50*4K太小,建議 5000*4K.
6)MAXFILOP:最大可打開文件數,默認64太小,
db2 get snapshot for database on db_name
查看"關閉的文件數"項,若>0則需要增大此參數
7)CATALOGCACHE_SZ:運行db2 get snapshot for db on sample
若 目錄高速緩存溢出項大於0則增加參數值
否則按照如下公式計算比率:
比率=100- 目錄高速緩存插入*100/目錄高速緩存查詢
保證命中率大於95%,否則增加
8)LOCKTIMEOUT:鎖超時時間,單位:秒,默認爲-1,即總是保持鎖,
應該改爲一個合適的值,oltp爲10秒爲基礎調整,
olap以60秒爲基礎調整.
9)num_io_cleaners:CPU個數
10)num_io_servers:預取程序數目,和cpu個數相同即可,但不應小於默認值3
11)MAXAGENTS:運行命令db2 get snapshot for database manager
查看“從另一個應用程序竊用的代理程序數”項,
若值大於0,則應該增加此參數的值