时间:2021-07-01 10:21:17 帮助过:16人阅读
查看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 重点 占用