db2 bufferpool操作

时间:2022-10-06 11:55:47

一、概述

数据库BufferPool介绍:
对于数据库管这种对性能要求极高的系统而言,缓存自然也是不可少的。数据库中的缓存称为缓冲池,缓冲池存在的唯一目的就是提高数据库系统性能。

缓冲池本质上是分配给数据库管理器管理的一块内存空间,用于读写数据页。(包括表行和索引数据页。内存中表行数据页称为缓存表)由于从内存访
问数据比从磁盘访问数据快得多(访问磁盘是典型的I/O操作,一次I/O大概耗时0.0125S),通过将部分常用或者需要预取的数据存放在缓冲池以便
系统直接访问和操作可以减少磁盘I/O,合理的缓冲池空间和好的缓冲池页面替换算法(提高命中率)可以大大提高数据库系统的性能。

注意分配给DB2的内存空间不仅仅是缓冲池,还包括包缓存空间,日志缓存空间等等一些其他的内存空间,其中缓冲池占了DB2内存的大部分。

二、缓冲池查看

1、最准确查询方法通过数据库系统表进行查询
db2 "select * from syscat.bufferpools"
其中BPNAME为BF名字,
PAGESIZE为页大小,
NPAGES为设置的页数;
其中NPAGES设置为-2为自动扩展,设置为具体值为此BF的具体大小,计算方法为PAGESIZE*NPAGES。

2、通过db2pd命令进行查询
db2pd -d dbname -bufferpools
查看具体的BF的设置大小和详细信息
其中Name为BF名字
PageSz为页大小
PA-NumPgs为页大小
CurrentSz实际生效的页大小

3、通过db2top命令进行查询
db2top 是db2数据库自带的比较好用的一个监控console,不只是包括了BF的监控查看,
还包含了数据库其他的监控(SQL、LOCK、SORT、Session等)。使用方法db2top -d dbname之后按b进入BF监控。

三、缓冲池修改

备注:其中方法1只能查看设置的BF的信息,方法2既能查看设置的BF信息还能 实际生效的BF大小。
DB2数据库BF修改方法:
1、修改bufferpool固定值大小
alter bufferpool BFName immediate size 200000

2、修改为-1
alter bufferpool BFName size -1

3、修改为-2
alter bufferpool BFName immediate size 1000 automatic
备注:修改后立即生效无需重启数据库