DB2缓冲池创建修改和删除

缓冲池是从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的主存储器区域。每个DB2数据库都必须具有一个缓冲池。

每个新数据库都定义了一个称为IBMDEFAULTBP的缺省缓冲池。可以通过SYSCAT.BUFFERPOOLS目录视图访问数据库中所定义的缓冲池信息。



一、缓冲池的使用方法:

首次访问表中的数据行时,数据库管理器会将包含该数据的页放入缓冲池中。这些页一直保留在缓冲池中,直到关闭数据库或者其他页需要使用某一页所占用的空间为止。

缓冲池中的页可能正在使用,也可能没有使用,它们可能是脏页,也可能是干净页:

l    正在使用的页就是当前正在读取或更新的页。为了保持数据一致性,数据库管理器只允许一次只有一个代理程序更新缓冲池中的指定页。如果正在更新某页,那么它正在那一个代理程序互斥地访问。如果正在读取该页,那么多个代理程序可以同时读取该页。

l    脏页包含已更改但尚未写入磁盘的数据。

l    将一个已更改的页写入磁盘之后,它就是一个干净页,并且可能仍然保留在缓冲池中。



二、创建缓冲池:

CREATE BUFFERPOOL PAGESIZE 4096

缺省情况下,新的缓冲池是使用IMMEDIATE关键字创建的。对于立即请求,不需要重新启动数据库。落实此语句时,缓冲池将反映在系统目录表中,但缓冲池要在下次启动数据库后才变成活动状态。

如果发出CREATE BUFFERPOOL DEFERRED,那么不会立即激活缓冲池,将在下一次启动数据库时创建缓冲池。在重新启动数据库之前,任何新的表空间都将使用现有缓冲池,即使创建表空间时规定它显式使用延迟缓冲池也是如此。

在分区数据库上,还可以定义要在每个数据库分区上以不同方式创建的缓冲池。缺省ALL DBPARTITIONNUMS子句指示将在数据库中的所有数据库分区上创建此缓冲池。DATABASE PARTITION GROUP子句标识缓冲池定义适用于的数据库分区组:

CREATE BUFFERPOOL

  PAGESIZE 4096

  DATABASE PARTITION GROUP

指定了此参数,那么仅在这些数据库分区组中的数据库分区上创建缓冲池。每个数据库分区组当前必须存在于数据库中。



三、修改缓冲池

在下列情况下可能要修改缓冲池:

l    启用缓冲池自调整功能,从而允许数据库管理器根据工作负载调整缓冲池大小。

l    修改基于块的I/O的缓冲池的块区域。

l    将此缓冲池定义添加到新的数据库分区组中。

l    修改部分或所有数据库分区上的缓冲池大小。

>>-ALTERBUFFERPOOL--bufferpool-name---------------------------->



    .-IMMEDIATE-.                                                                                       

>--+-+-----------+--+-------------------------------------+--SIZE--+-number-of-pages----------------+-+-><

   | '-DEFERRED--' '-DBPARTITIONNUM--db-partition-number-'       '-+-----------------+--AUTOMATIC-' |   

   |                                                                '-number-of-pages-'             |   

   +-ADD DATABASE PARTITION GROUP--db-partition-group-name--------------------------------------------+   

   +-NUMBLOCKPAGES--number-of-pages--+----------------------------+-----------------------------------+   

   |                                '-BLOCKSIZE--number-of-pages-'                                  |   

   '-BLOCKSIZE--number-of-pages-----------------------------------------------------------------------'



当使用IMMEDIATE参数时,将立即更改缓冲池大小,而不必等到下一次激活数据库时才生效。如果数据库共享内存不足以分配新空间,那么会延迟(DEFERRED)运行该语句。

当使用DEFERRED参数时,要在重新激活数据库后才应用对缓冲池所作的更改。

在落实ALTER BUFFERPOOL语句时,由于此语句而对缓冲池所作的更改将反映在系统目录表中。但是,要在下次启动数据库之后,对实际缓冲池所作的更改才会生效,但是所指定的带有缺省IMMEDIATE关键字并成功执行的ALTER BUFFERPOOL请求除外。



四、删除缓冲池

删除缓冲池时,应确保没有任何表空间已指定给这些缓冲池。不能删除IBMDEFAULTBP缓冲池。

DROP BUFFERPOOL

作者:keeptrying
参与5

3同行回答

huiyzouhuiyzou项目经理上海翰明
学习了,谢谢楼主分享显示全部
学习了,谢谢楼主分享收起
互联网服务 · 2013-03-28
浏览1110
Priest_LeonPriest_Leon系统架构师99无限
最基本的缓冲池操作显示全部
最基本的缓冲池操作收起
互联网服务 · 2013-01-16
浏览1143
maomao项目经理未来国际
嗯,学习了显示全部
嗯,学习了收起
IT分销/经销 · 2013-01-10
浏览1159

提问者

miya12
其它天津

问题状态

  • 发布时间:2013-01-08
  • 关注会员:2 人
  • 问题浏览:5754
  • 最近回答:2013-03-28
  • X社区推广