db2缓冲池

缓冲池

一个缓冲池是与单个数据库相关联的,可以被多个表空间使用。当考虑将缓冲池用于一个或多个表空间时,必须保证表空间页大小和缓冲池页大小对于缓冲池所“服务”的所有表空间而言都是一样的。一个表空间只能使用一个缓冲池。

创建数据库时,会创建一个名为 IBMDEFAULTBP 的缺省缓冲池,所有的表空间都共享该缓冲池。可以使用 CREATE BUFFERPOOL 语句添加更多的缓冲池。缓冲池的缺省大小是 BUFFPAGE 数据库配置参数所指定的大小,但是可以通过在 CREATE BUFFERPOOL 命令中指定 SIZE 关键字来覆盖该缺省值。足够的缓冲池大小是数据库拥有良好性能的关键所在,因为它可以减少磁盘 I/O 这一最耗时的操作。大型缓冲池还会对查询优化产生影响,因为更多的工作可在内存中完成。

基于块的缓冲池 
V8 允许您留出缓冲池的一部分(最高可达 98%)用于基于块的预取操作。基于块的 I/O 可以通过将块读入相邻的内存区而不是将它分散装入单独的页,来提高预取操作的效率。每个缓冲池的块大小必须相同,并且由 BLOCKSIZE 参数进行控制。该值等于块的大小(单位为页),从 2 到 256,缺省值为 32。

扩展存储器 
DB2 不将扩展存储器用于缓冲区。但是,可以用扩展存储器来高速缓存内存页,使得从内存移出页变得更快。

CREATE BUFFERPOOL 语句的示例

下面是 CREATE BUFFERPOOL 语句的一个示例:

CREATE BUFFERPOOL BP3
SIZE 2000
PAGESIZE 8K

该缓冲池被分配给上面的 CREATE TABLESPACE 示例上的 USERSPACE3,并且在创建表空间之前创建该缓冲池。请注意,缓冲池和表空间的页大小都是 8K,两者是相同的。如果您在创建缓冲池之后创建表空间,则可以省去 CREATE TABLESPACE 语句中的 BUFFER POOL BP3 语法。相反,可以使用 altER TABLESPACE 命令将缓冲池添加到现有的表空间:

ALTER TABLESPACE USERSPACE3 BUFFERPOOL BP3

如何查看缓冲池属性

通过查询 SYSCAT.BUFFERPOOLS 系统视图可以列出缓冲池信息:

SELECT * FROM SYSCAT.BUFFERPOOLS
BPNAME             BUFFERPOOLID NGNAME             NPAGES      PAGESIZE    ES
------------------ ------------ ------------------ ----------- ----------- --
IBMDEFAULTBP                  1 -                          250        4096 N
  1 record(s) selected.

要找出哪个缓冲池被分配给了表空间,请运行下面这个查询:

SELECT TBSPACE, BUFFERPOOLID FROM SYSCAT.TABLESPACES
TBSPACE            BUFFERPOOLID
------------------ ------------
SYSCATSPACE                   1
TEMPSPACE1                    1
USERSPACE1                    1
  3 record(s) selected.

可以在上一个查询中找到 BUFFERPOOLID,该查询使您能够看到每个表空间与哪个缓冲池相关联。

猜你喜欢

转载自wtj6891.iteye.com/blog/2096405
db2
今日推荐