IBM DB2參數(shù)調(diào)優(yōu)如何顯神功?
此文章向大家講述的是IBM DB2參數(shù)調(diào)優(yōu)的正確操作技巧,在開始之前,請大家關(guān)閉IBM目錄服務(wù)器。還要將上下文切換,切換到IBM目錄服務(wù)器DB2實例擁有者,一般是ldapdb2用戶。比如:
1、在Unix系統(tǒng)里,輸入:
su-ldapdb2
2、在Windows系統(tǒng)里,輸入:
db2cmd
setDB2INSTANCE=ldapdb2
為了調(diào)節(jié)IBM DB2參數(shù),運行db2-tunings.sh腳本,你可以在這里下載:
http://www3.software.ibm.com/ibmdl/pub/software/tivoli_support/misc/Security/AMeB/_
am5.1/tuning_guide_scripts.tar
或者通過ftp地址:
ftp://ftp.software.ibm.com/software/tivoli_support/misc/Security/AMeB/am5.1/tuning_guide_scripts.tar
Web頁面需要注冊用戶名和密碼。
這個腳本的文件系統(tǒng)擁有者必須是DB2實例擁有者,一般就是ldapdb2用戶。文件系統(tǒng)組應(yīng)該和實例擁有者相同(一般是dbsysadm)。腳本必須在DB2實例擁有者的上下文中使用。
腳本中的ibmdefaultbp和ldapbp參數(shù)控制著DB2的緩沖池。db2_turnings.sh腳本,設(shè)置了DB2緩沖池的建議大小。其他一些可選的設(shè)置在腳本的注釋里寫明了。IBM目錄服務(wù)器的性能隨著DB2緩沖池的增長而提高。然而在大多數(shù)情況下,通過這樣IBM DB2參數(shù)調(diào)節(jié)方式,你可以預(yù)見不超過10%的性能提高。
DB2緩沖池是DB2緩存數(shù)據(jù)表和索引的地方。DB2用戶使用索引來在查詢時迅速找到該獲取哪個表行項。需要更多信息,請參考IBMDirectoryServerTuningGuide。
顯示和驗證當前設(shè)置
輸入如下命令來顯示當前的DB2參數(shù)調(diào)節(jié)設(shè)置的結(jié)果:
- db2getdatabaseconfigurationforldapdb2|\
- egrep'DBHEAP|SORTHEAP|MAXLOCKS|MINCOMMIT|UTIL_HEAP_SZ|APPLHEAPSZ'
- db2connecttoldapdb2
- db2"selectbpname,npages,pagesizefromsyscat.bufferpools"
- db2terminate
如果某個堆配置參數(shù)過低,就將出現(xiàn)一些功能性的問題。輸入如下命令來顯示當前的堆參數(shù)設(shè)置:
- db2getdbcfgforldapdb2|grepHEAP
下面是一個使用了推薦值的多種堆參數(shù)的輸出例子顯示:
- Databaseheap(4KB)(DBHEAP)=1200
- Utilitiesheapsize(4KB)(UTIL_HEAP_SZ)=5000
- Maxappl.controlheapsize(4KB)(APP_CTL_HEAP_SZ)=128
- Sortlistheap(4KB)(SORTHEAP)=2500
- SQLstatementheap(4KB)(STMTHEAP)=2048
- Defaultapplicationheap(4KB)(APPLHEAPSZ)=2048
- Statisticsheapsize(4KB)(STAT_HEAP_SZ)=4384
如果一個堆參數(shù)小于最小值,輸入如下命令將其增大到最小值:
- db2updatedbcfgforldapdb2usingparm_nameparm_value
這里parm_name是上文輸出中的第三欄的字樣(無括號),parm_value是最后一欄的值。
如果堆IBM DB2參數(shù)設(shè)置的過高或者過低,IBM的目錄服務(wù)器都會以失效來提示出現(xiàn)了問題。在這種情況下,需要查看諸如 IBMDirectoryServerV4.1(IDS4.1)的cli.error文件或者 IBMTivoliDirectoryServerV5.2(IDSv5.2)的db2cli.log或者其他一些文件。在IDSv4.1系統(tǒng)中,該文件缺省目錄在Solaris的/var/ldap/和AIX的/tmp中。在IDSv5.1和后來系統(tǒng)中,Solaris和AIX的缺省目錄都是/var /ldap。
注意db2look能夠在一條命令下提供關(guān)于數(shù)據(jù)庫及其配置的足夠多的信息。例子如下:
- db2look-dldapdb2-uldapdb2-p-ooutput_file
output_file是存儲結(jié)果的文件位置。
關(guān)于IBM目錄服務(wù)器運行的警告
DB2參數(shù)調(diào)節(jié)使用了db2terminate。如果當該命令發(fā)出,IBM目錄服務(wù)器slapd或ibmslapd進程在運行,它將阻止服務(wù)器的部分功能。所有緩存的搜索看起來反應(yīng)正常。其他的搜索將會簡單的變?yōu)闊o結(jié)果或者出現(xiàn)錯誤信息?;謴?fù)功能將會重啟IBM目錄服務(wù)器。因此最好是在調(diào)節(jié)DB2參數(shù)時關(guān)閉IBM目錄服務(wù)器。
關(guān)于緩沖池內(nèi)存使用的警告
如果任何的緩沖池被設(shè)置過高,DB2將會因為缺少足夠內(nèi)存而無法啟動。如果出現(xiàn)該問題將會有一個核心轉(zhuǎn)儲的文件,但是通常沒有錯誤信息。
在AIX系統(tǒng)里,系統(tǒng)錯誤日志將會報告一個內(nèi)存分配失敗。查看這個日志請輸入:
errpt-a|more
使用太大的緩沖池大小來恢復(fù)一個被分在系統(tǒng)里的數(shù)據(jù)庫將會導(dǎo)致恢復(fù)失敗。查看http://publib.boulder.ibm.com /infocenter/tivihelp/v2r1/topic/com.ibm.itame3.doc_5.1 /am51_perftune116.htm#idtrouble來解決這個問題。
如果DB2因為緩沖池過大而無法啟動,請重新調(diào)節(jié)IBM DB2參數(shù)。
關(guān)于MINCOMMIT的警告
不要設(shè)置MINCOMMIT為1以外的數(shù)。最新的db2_tunings.sh腳本正確的設(shè)置了該值為1。以前的版本均設(shè)置為25。設(shè)置為非1的值將會導(dǎo)致更新操作的超時,并且有可能影響更新的速度。
【編輯推薦】
- DB2取得當前時間如何正確操作?
- DB2數(shù)據(jù)庫物化視圖之MQT物化查詢表的正確應(yīng)用
- 實現(xiàn)DB2數(shù)據(jù)庫遷移之導(dǎo)入步驟在Linux下
- DB2數(shù)據(jù)庫遷移的導(dǎo)出步驟在Linux操作系統(tǒng)下
- DB2無限活動日志策略,從介紹到實際的操作技巧