缓冲池的自动调整问题

创建了个缓冲池给应用使用: db2 CREATE BUFFERPOOL BUF8K_AS IMMEDIATE SIZE 10000 AUTOMATIC PAGESIZE 8K数据库版本是DB2 V9.7,服务器内存有16G,数据库的参数都是默认设置,没有人为调整过。在压力测试的过程中,发现数据库服务器的IO BUSY%一直都是100%,SQL语句监控方面发现很...显示全部
创建了个缓冲池给应用使用: db2 CREATE BUFFERPOOL BUF8K_AS IMMEDIATE SIZE 10000 AUTOMATIC PAGESIZE 8K
数据库版本是DB2 V9.7,服务器内存有16G,数据库的参数都是默认设置,没有人为调整过。

在压力测试的过程中,发现数据库服务器的IO BUSY%一直都是100%,SQL语句监控方面发现很多语句都存在不小的POOL_DATA_P_READS。但是这些SQL涉及的表是单表(3张表),数据量也在10万笔以内,按照设想,这些点数据量应该都可以被缓存到缓冲池中而不用每次执行都从磁盘上面读取。


用db2mtrk -i -d -v查看这个缓冲池的内存,发现仅有20M左右,而数据库服务器当前FREE的内存还有6G左右。


然后取消这个缓冲池的自动调整属性,直接将大小设置为1G,再执行压力测试,数据库服务器的IO BUSY%就降到30%以下,回到正常水平。


现在的问题是:DB2的缓冲池已经被建成了自动调整的,DB2的内存也都是自动调整的,数据库也有重启过,为啥缓冲池就不会自动把内存调大点呢,
自动调整大小仅为20M,然后一直在从磁盘读数据,把数据库服务器的IO搞崩了。这是什么情况呢,难道DB2的自动调整不靠谱?收起
参与10

查看其它 8 个回答qingsong3333的回答

qingsong3333qingsong3333数据仓库工程师IBM
如果诚如题主所说,缓冲池是做了自动调整的,只不过调整小了。
10000 * 8K = 80 MB, 您查看结果只有20M。

在缓冲池命中率如此高的情况下,I/O还那么高,是不是有LOB字段,或者有其他应用在用I/O吗?
IT咨询服务 · 2015-05-29
浏览1193

回答者

qingsong3333
数据仓库工程师IBM
擅长领域: 数据库存储关系型数据库

qingsong3333 最近回答过的问题

回答状态

  • 发布时间:2015-05-29
  • 关注会员:1 人
  • 回答浏览:1193
  • X社区推广