检查相关缓冲池快照,需要重点关注的 data 和 index 的逻辑/物理读写数据,一般来说,
在缓冲池足够的情况下,physical reads 值趋近于 0,而 logical reads 值则很大。下面是红塔
集团 OA 的 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
Buffer pool temporary index logical reads = 0
Buffer pool temporary index physical reads = 0
Total buffer pool read time (milliseconds) = 671
Total buffer pool write time (milliseconds)= 15
Buffer pool index writes = 58
No victim buffers available = 635
Tablespaces using bufferpool = 2
Alter bufferpool information:
如果发现物理和逻辑读的值相差不大,则使用下面的命令调整缓冲池大小,一般可以
每次增加 2000 左右。
db2 ALTER BUFFERPOOL BF32 size 18000
缓冲池的调整是立即生效的,不需要重启数据库。需要注意的是,缓冲池的大小受物
理内存和操作系统限制,一般 32 位操作系统下,总的缓冲池大小不能超过 1G。如果在这
个限制下,不能满足所有缓冲池都达到物理读趋近于 0,则考虑尽可能保证用户体验影响
较大的(MV、UM 等开头的表使用的)缓冲池大小。理论上 64 位操作系统可以管理更大的内
存空间,因此可以获得更好的性能。如下所示缓冲池,总大小为
1x4+4x4+3x8+2.5x16+2.5x32+1x32=226M
BPNAME NPAGES PAGESIZE
-------------------------------------------- ----------- -----------