缓冲池:
一、缓冲池是指从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表和索引数据的内存区域。每一个DB2数据库必须至少要有一个缓冲池。数据库中的数据访问都要经过缓冲池。读数据要先读到缓冲池中然后再提交应用程序,写数据也要先写到缓冲池中再I/O操作。
缓冲池是影响数据性能的最大参数,所以必须合理地设计缓冲池。
创建数据库时,系统会自动创建一个IBMDEFAULTBF的默认缓冲池,所有表空间都共享该缓冲池。可以create、drop、alter buffpool 。
足够的缓冲池大小是数据库拥有良好性能的关键所在,因为它可以减少磁盘I/O这一耗时操作。大型缓冲池还会对查询优化产生影响,因为更多的工作可以在内存中完成,而无需进行I/O。
创建缓冲池
CREATE BUFFERPOOL 语句的示例
CREATE BUFFERPOOL BP2
SIZE 2000
PAGESIZE 8K
将表空间加载到缓冲池中
ALTER TABLESPACE USERSPACE3 BUFFERPOOL BP2;
删除缓冲池
DROP BUFFERPOOL BP2;
修改缓冲池大小
ALTER BUFFERPOOL "BP2" IMMEDIATE SIZE 5000;
查看缓冲池属性
SELECT * FROM SYSCAT.BUFFERPOOLS
SELECT TBSPACE,BUFFERPOOLID FROM SYSCAT.TABLESPACES --查询表空间与哪个缓冲池相关联
缓冲池命中率:表明数据库管理器不需要从磁盘装入页(即该页已经在缓冲池中)就能处理页请求的时间百分比。
公式如下:
在DB2中,BUFFERPOOL的命中率的计算公式是:
1 - ( 缓冲池数据物理读取 + 缓冲池索引物理读取 ) / ( 缓冲池数据逻辑读取 + 缓冲池索引逻辑读取 )
缓冲池的命中率越高,使用磁盘I/O的频率就越低。
(1 -((buffer pool data physical reads + buffer pool index physical reads) /(buffer pool data logical reads + pool index logical reads))) *100%
如:C:\Users\Administrator>db2 select substr(bp_name,1,12),total_hit_ratio_percent,data_hit_ratio_percent,index_hit_ratio_percent
from sysibmadm.bp_hitratio;
IBMDEFAULTBP 99.8999.999.86
BUFFER4 61.5559.3686.26
BUFFER8 91.9191.6495.22
BUFFER16 99.8699.8750.53
BUFFER32 99.2399.23(null)