当前位置:Gxlcms > 数据库问题 > db2缓冲池调优

db2缓冲池调优

时间:2021-07-01 10:21:17 帮助过:16人阅读

//查看缓存池信息 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 

//由于缓冲池的监控器收集的是自启用以后的数据,为获得调整后的准确情况,应关闭后重新打开,再次收集快照信息

 

db2缓冲池调优

标签:不同   缓存   sele   优化   more   was   cat   重点   占用   

人气教程排行