DB2缓冲池

缓冲池的作用

缓冲池用于从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的内存区域。
每个数据库至少有一个缓冲池。
数据库中的数据访问都需要经过缓冲池:读的数据需要先读到缓冲池才能提交给应用,写的数据也是要先写到缓冲池才能进行I/O。
缓冲池是影响数据库性能最大的参数,所以必须合理地设计缓冲池。

缓冲池命中率

数据库管理器不需要从磁盘装入页(即该页已经在缓冲池中)就能处理页请求的时间百分比。
公式如下:

1 - ( 缓冲池数据物理读取 + 缓冲池索引物理读取 ) / ( 缓冲池数据逻辑读取 + 缓冲池索引逻辑读取 )

缓冲池的命中率越高,使用磁盘I/O的频率就越低。

查询缓冲池命中率

打开实例级开关:主要是以下几个参数:

[db2inst1@TEST ~]$ db2 "update dbm cfg using DFT_MON_BUFPOOL ON"
[db2inst1@TEST ~]$ db2 "update dbm cfg using DFT_MON_TABLE ON"
[db2inst1@TEST ~]$ db2 "update dbm cfg using DFT_MON_STMT ON"
[db2inst1@TEST ~]$ db2 "update monitor switches using bufferpool 
on lock on sort on statement on table on uow on"

DFT_MON_BUFPOOL :默认打开实例的缓冲池监控开关
DFT_MON_TABLE
DFT_MON_STMT

开关打开后可以查询命中率:
[db2inst1@TEST ~]$ db2 "SELECT substr(BP_NAME,1,20) AS BP_NAME_
,(POOL_INDEX_P_READS+POOL_DATA_P_READS) AS physical_read
,(POOL_INDEX_L_READS+POOL_DATA_L_READS) AS logic_read
,1-(CAST((POOL_INDEX_P_READS+POOL_DATA_P_READS) AS DECIMAL(16,2)))/(CAST((POOL_INDEX_L_READS+POOL_DATA_L_READS + 1 ) AS DECIMAL(16,2))) AS hitting_accuracy
,SNAPSHOT_TIMESTAMP AS snapshot_time
FROM TABLE (SNAPSHOT_BP('SAMPLE',-1 )) AS SNAPSHOT_BP"

SAMPLE是数据库的名称
在这里插入图片描述

创建缓冲池

BUFFERPOOL/缓冲池名称SIZE/大小PAGESIZE/页的大小(KB/B)占用内存(MB)
BP4K10004/40964
BP8K10008/81928
BP16K100016/1638416
BP32K100032/3276832
CREATE BUFFERPOOL "BP4K"  SIZE 1000 PAGESIZE 4096
CREATE BUFFERPOOL "BP8K"  SIZE 1000 PAGESIZE 8k

PAGESIZE后面的数字单位默认为字节
没有指定后缀K的情况下,有效值是4096,8192,16384,32768;
有后缀K的情况下,有效值是4,8,16,32。
如果不是这些有效值,会报错。
当表空间的page size和所指定的buffer pool的page size大小不一样,也会报错。

查看缓冲池

通过查询数据的方式

[db2inst1@TEST ~]$ db2 connect to SAMPLE
[db2inst1@TEST ~]$ db2 'select substr(BP_NAME,1,20) BP_NAME
, substr(DB_NAME,1,20) DB_NAME 
, substr(DB_PATH,1,50) DB_PATH from sysibmadm.snapbp'
[db2inst1@TEST ~]$ db2 'select substr(BPNAME, 1,15) BPNAME
, BUFFERPOOLID
, NPAGES
, PAGESIZE/1024 PAGESIZE_KB
, NPAGES * PAGESIZE/1024/1024 FREE_MB from syscat.bufferpools'

BP_NAME:缓冲池名称
DB_NAME:数据库名称
DB_PATH:缓冲池路径
BUFFERPOOLID:缓冲池序号
NPAGES
PAGESIZE
在这里插入图片描述
在这里插入图片描述
FREE的值加起来就是该库占用的内存

通过命令方式

db2mtrk -d -v

修改缓冲池

db2 alter bufferpool BP4K size 2000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_26264237

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值