db2緩沖池調優


 

 

緩存池:

沖池是內存中的一塊區域,db2會將用到數據放到緩沖池中提高性能。緩沖池太小,每次查詢仍然要到磁盤中操作,達不到緩沖的效果。緩沖池太大,超出操作系統管理的限制,會導致數據庫無法連接的錯誤。

緩沖池是通過表空間與數據表發生聯系的,數據表存放在指定的表空間中,每個表空間又有指定的緩沖池。因為每張數據表存儲的數據量都不同,一般根據每條記錄存放的最大數據量,我們會為數據表分別指定4k-32k不同的表空間來存放,以達到優化存儲和性能的目的,緩沖池也是類似。這個一般在創建數據庫時就會分配好了。

 

 案發預警:

應用系統程序:一般是登錄、首頁、待辦列表等數據量比較大的模塊,響應時間長,耗時數秒到數十秒都有可能。有時候是用戶訪問高峰期慢,下班時間又比較正常。  操作系統上的表現:一般是中間件服務器(WAS)系統正常,CPU和IO占用不會持續超過50%,系統運行進程不會有持續的等待。數據庫服務器則非常繁忙,CPU占用持續在50%以上,往往會達到持續90%左右,IO占用可能不高。從系統層面判斷,性能瓶頸出在數據庫上

 

調優思路:

db2的性能和操作系統、鎖、緩沖池、索引等參數,以及SQL的寫法都有很大關系,受限於個人認識,這里主要介紹緩沖池和索引的調優方法。 
緩沖池的調整比較簡單,一般可以先調整緩沖池,若效果不明顯,則再調整索引和sql

切換實例用戶id  查看緩存池相關內容
su db2inst1

db2 connect to db

//查看緩存池信息
db2 "select BPNAME,NPAGES,PAGESIZE from syscat.bufferpools" 

表空間名稱(TableSpaceName)
使用的緩沖池名稱(BufferpoolName),表空間的頁大小(TBSPageSize)
緩沖池的數量(BufferpoolPages),緩沖池的頁大小數據(BufferpoolSize)信息

  

查看mv_workitem表所在表空間和緩沖池信息,一般“MV_”開頭的表使用的緩沖池是重點關注對象:

db2 "select TABSCHEMA TableSchemaName, TABNAME TableName, t.TBSPACE TableSpaceName,b.BPNAME BufferpoolName, b.NPAGES BufferpoolPages, 
b.PAGESIZE BufferpoolSize 
from 
SYSCAT.TABLES t 
,SYSCAT.BUFFERPOOLS 
b,SYSCAT.TABLESPACES s 
where 
tabname='MV_WORKITEM' 
and 
s.BUFFERPOOLID=b.BUFFERPOOLID  and t.TBSPACE=s.TBSPACE"

//注意TableSchemaName、BufferpoolName、BufferpoolSize 

 

//開啟緩沖池監控器:
db2 update monitor switches using bufferpool on 
//在應用系統重現問題后,檢查緩沖池的快照:
db2 get snapshot for bufferpools on pzbdw|grep -i buffer|more 

  

檢查db2緩沖池快照,重點關注data和index的邏輯/物理讀寫數據,一般來說在緩沖池足夠的情況下,physiical reads值趨進於0,而logical和reads值則很大,情況反之就是不夠用有問題,例如一下案例是xxx系統的32k緩沖池快照:

 Bufferpool Snapshot 
Bufferpool name                            = BF32 
//Buffer pool data logical reads             = 493907 
//Buffer pool data physical reads            = 78 
Buffer pool temporary data logical reads   = 129662 
Buffer pool temporary data physical reads  = 0

Buffer pool data writes                    = 1 
//Buffer pool index logical reads            = 10302 
//Buffer pool index physical reads           = 122 

//如果發現物理和邏輯讀的值相差不大,則使用下面的命令調整緩沖池大小,一般可以每次增加2000左
右

  

db2 ALTER BUFFERPOOL BF32 size 18000 

緩沖池的調整是立即生效的,不需要重啟數據庫。需要注意的是,緩沖池的大小受物理內存和操作系統限制,一般32位操作系統下,總的緩沖池大小不能超過1G。如果在這個限制下,不能滿足所有緩沖池都達到物理讀趨近於0,則考慮盡可能保證用戶體驗影響較大的(MV、UM等開頭的表使用的)緩沖池大小。理論上64位操作系統可以管理更大的內存空間,因此可以獲得更好的性能。如下所示緩沖池,總大小為:

1x4+4x4+3x8+2.5x16+2.5x32+1x32=226M

 

重復以上步驟再次收集快照信息:

db2 update monitor switches using bufferpool off 
db2 update monitor switches using bufferpool on  
db2 get snapshot for bufferpools on pzbdw|grep -i buffer|more 

//由於緩沖池的監控器收集的是自啟用以后的數據,為獲得調整后的准確情況,應關閉后重新打開,再
次收集快照信息

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM