數(shù)據(jù)庫(kù)從操作系統(tǒng)申請(qǐng)到的內(nèi)存可分為兩部分:1.緩存池內(nèi)存(數(shù)據(jù)頁(yè)和空閑頁(yè))2.非緩存池內(nèi)存(線程/DLL/連接服務(wù)器等).在數(shù)據(jù)庫(kù)中,如何設(shè)置和調(diào)整bufferpool是一個(gè)
數(shù)據(jù)庫(kù)從操作系統(tǒng)申請(qǐng)到的內(nèi)存可分為兩部分:1.緩存池內(nèi)存(數(shù)據(jù)頁(yè)和空閑頁(yè)) 2.非緩存池內(nèi)存(線程/DLL/連接服務(wù)器等). 在數(shù)據(jù)庫(kù)中,如何設(shè)置和調(diào)整bufferpool是一個(gè)重要技巧,值太大可能會(huì)使數(shù)據(jù)庫(kù)無法啟動(dòng),太小又會(huì)使應(yīng)用出錯(cuò),不能充分發(fā)揮數(shù)據(jù)庫(kù)性能。
舉例來說:
當(dāng)你連接DB2數(shù)據(jù)庫(kù),運(yùn)行某SQL語句時(shí)提示:
SQL1218N There are no pages currently available in bufferpool "4096"。SQLSTATE=57011。
一般解決思路:
調(diào)整buffpool的大小
解決方法:
1> 啟動(dòng)數(shù)據(jù)庫(kù)
db2inst1@tysq: db2start
啟動(dòng)db2命令行
db2inst1@tysq:db2
2> 連接數(shù)據(jù)庫(kù)
db2 =>connect to test
3> 修改buffer pool
檢查當(dāng)前數(shù)據(jù)庫(kù)已有的buffer pool
db2=>select * from syscat.bufferpools
結(jié)果顯示系統(tǒng)存在默認(rèn)的bufferpool IBMDEFAULTBP, 大小為4K(1*4096),這個(gè)數(shù)值明顯太小;
直接修改IBMDEFAULTBP的大小:
db2 =>alter bufferpool IBMDEFAULTBP immediate size 50000
現(xiàn)在bufferpool的大小為200M(50000*4096) ,可以滿足當(dāng)前應(yīng)用需求。
4> 重啟數(shù)據(jù)庫(kù)管理程序
db2inst1@tysq: db2stop force
db2inst1@tysq: db2star
還有一種觀察方法
db2inst1@tysq:~> db2pd -db zssqdb01 -buff
Database Partition 0 -- Database ZSSQDB01 -- Active -- Up 23 days 08:43:02 -- Date 2014-01-11-17.58.28.554662
Bufferpools:
First Active Pool ID 1
Max Bufferpool ID 2
Max Bufferpool ID on Disk 2
Num Bufferpools 6
Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic
0x00002AB4A91D91C0 1 IBMDEFAULTBP 4096 86884 0 0 5 0 86884 86884 0 True
0x00002AB4A91DA3C0 2 BP32 32768 45000 0 0 2 0 45000 45000 0 False
0x00002AB419AE4260 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False
0x00002AB419AE5460 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False
0x00002AB419AE66A0 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False
0x00002AB419AE78E0 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False
在這里可看到各個(gè)緩沖區(qū)的大小。檢查SQL語句,可以發(fā)現(xiàn)報(bào)緩沖區(qū)不足信息的相應(yīng)涉及表在幾號(hào)表空間,那個(gè)表空間對(duì)應(yīng)使用的BufferpoolID是什么,這樣可以擴(kuò)充對(duì)應(yīng)的緩沖區(qū)空間,不是所有這個(gè)報(bào)錯(cuò)都和IBMDEFAULTBP有關(guān)系。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com