视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Db2的bufferpool问题
2020-11-09 10:27:04 责编:小采
文档

数据库从操作系统申请到的内存可分为两部分:1.缓存池内存(数据页和空闲页)2.非缓存池内存(线程/DLL/连接服务器等).在数据库中,如何设置和调整bufferpool是一个

数据库从操作系统申请到的内存可分为两部分:1.缓存池内存(数据页和空闲页) 2.非缓存池内存(线程/DLL/连接服务器等). 在数据库中,如何设置和调整bufferpool是一个重要技巧,值太大可能会使数据库无法启动,太小又会使应用出错,不能充分发挥数据库性能。

举例来说:

当你连接DB2数据库,运行某SQL语句时提示:

SQL1218N There are no pages currently available in bufferpool "4096"。SQLSTATE=57011。

一般解决思路:

调整buffpool的大小

解决方法:

1> 启动数据库
db2inst1@tysq: db2start
启动db2命令行
db2inst1@tysq:db2

2> 连接数据库
db2 =>connect to test

3> 修改buffer pool

检查当前数据库已有的buffer pool
db2=>select * from syscat.bufferpools
结果显示系统存在默认的bufferpool IBMDEFAULTBP, 大小为4K(1*4096),这个数值明显太小;

直接修改IBMDEFAULTBP的大小:
db2 =>alter bufferpool IBMDEFAULTBP immediate size 50000
现在bufferpool的大小为200M(50000*4096) ,可以满足当前应用需求。

4> 重启数据库管理程序
db2inst1@tysq: db2stop force
db2inst1@tysq: db2star


还有一种观察方法

db2inst1@tysq:~> db2pd -db zssqdb01 -buff


Database Partition 0 -- Database ZSSQDB01 -- Active -- Up 23 days 08:43:02 -- Date 2014-01-11-17.58.28.554662


Bufferpools:

First Active Pool ID 1

Max Bufferpool ID 2

Max Bufferpool ID on Disk 2

Num Bufferpools 6


Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic

0x00002AB4A91D91C0 1 IBMDEFAULTBP 4096 86884 0 0 5 0 86884 86884 0 True

0x00002AB4A91DA3C0 2 BP32 32768 45000 0 0 2 0 45000 45000 0 False

0x00002AB419AE4260 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False

0x00002AB419AE5460 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False

0x00002AB419AE66A0 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False

0x00002AB419AE78E0 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False


在这里可看到各个缓冲区的大小。检查SQL语句,可以发现报缓冲区不足信息的相应涉及表在几号表空间,那个表空间对应使用的BufferpoolID是什么,这样可以扩充对应的缓冲区空间,不是所有这个报错都和IBMDEFAULTBP有关系。

下载本文
显示全文
专题