ALTER BUFFERPOOL 语句

ALTER BUFFERPOOL 语句用于修改缓冲池的特征或行为。 使用 ALTER BUFFERPOOL 语句 (例如,启用自调整内存) 有多种原因。

ALTER BUFFERPOOL 语句可以通过以下方式修改缓冲池:
  • 修改所有 成员 或单个 成员 上缓冲池的大小
  • 启用或禁用缓冲池的自动调整大小
  • 将此缓冲池定义添加到新的数据库分区组
  • 修改基于块的 I/O 的缓冲池的块区域

调用

此语句可嵌入应用程序中或者以交互方式发出。 它是一个可执行语句,仅当 DYNAMICRULES 运行行为对于程序包有效时才能动态编译 (SQLSTATE 42509)。

授权

语句的授权标识所拥有的特权必须包括 SYSCTRL 或 SYSADM 权限。

语法

Read syntax diagramSkip visual syntax diagramALTER BUFFERPOOLbufferpool-name IMMEDIATEDEFERREDMEMBERmember-numberSIZEnumber-of-pagesnumber-of-pagesAUTOMATICADD DATABASE PARTITION GROUPdb-partition-group-nameNUMBLOCKPAGESnumber-of-pagesBLOCKSIZEnumber-of-pagesBLOCKSIZEnumber-of-pages

描述

缓冲池名称
命名缓冲池。 这是一部分名称。 它是普通或定界 SQL 标识。 它必须是目录中描述的缓冲池。
立即 延迟
指示是否将立即更改缓冲池大小。
IMMEDIATE
将立即更改缓冲池大小。 如果数据库共享内存中没有足够的保留空间来分配新空间 (SQLSTATE 01657) ,那么将以 DEFERRED 方式执行该语句。
DEFERRED
重新激活数据库时将更改缓冲池大小 (所有应用程序都需要与数据库断开连接)。 不需要保留内存空间; 数据库将在激活时从系统分配所需的内存。
MEMBER 成员号
指定修改缓冲池大小的 成员 。 在 SYSCAT.BUFFERPOOLEXCEPTIONS 目录视图。 成员 必须位于缓冲池的其中一个数据库分区组中 (SQLSTATE 42729)。 如果未指定此子句,那么将在所有 成员 上修改缓冲池的大小,但在 SYSCAT.BUFFERPOOLEXCEPTIONS。
大小
指定缓冲池的新大小,或者对此缓冲池启用或禁用自调整。
页数
新缓冲池大小的页数。 如果缓冲池已经是自调整缓冲池,并且指定了 SIZE number-of-pages 子句,那么 alter 操作将对此缓冲池禁用自调整。
AUTOMATIC
为此缓冲池启用自调整。 数据库管理器根据工作负载需求调整缓冲池的大小。 如果指定了页数,那么当前缓冲池大小将设置为该值,除非还指定了延迟关键字,在这种情况下将忽略页数。 在后续数据库激活时,缓冲池大小基于自调整内存管理器 (STMM) 确定的最后一个调整值。 STMM 对自动缓冲池强制实施最小大小,这是当前大小和 5000 页的最小大小。 要确定已启用自调整的缓冲池的当前大小,请使用 MON_GET_BUFFERPOOL 例程并检查缓冲池的当前大小。 在bp_cur_buffsz 监视元素中找到缓冲池的大小。 当指定 AUTOMATIC 时,不能指定 MEMBER 子句 (SQLSTATE 42601)。
添加数据库分区组 db-partition-group-name
将此数据库分区组添加到缓冲池定义适用的数据库分区组列表。 对于数据库分区组中尚未定义缓冲池的任何成员,将使用为缓冲池指定的缺省大小在该成员上创建缓冲池。 db-partition-group-name 中的表空间可以指定此缓冲池。 数据库分区组当前必须存在于数据库中 (SQLSTATE 42704)。
NUMBLOCKPAGES 页数
指定应存在于基于块的区域中的页数。 根据 SYSCAT.BUFFERPOOLS (SQLSTATE 54052)。 指定值 0 将禁用块 I/O。 使用的 NUMBLOCKPAGES 的实际值将是 BLOCKSIZE 的倍数。

环境中不支持 NUMBLOCKPAGES(SQLSTATE 56038)。 Db2 pureScale® 环境中不支持 NUMBLOCKPAGES(SQLSTATE 56038)。

BLOCKSIZE 页数
指定块中的页数。 块大小必须是介于 2 与 256 之间的值 (SQLSTATE 54053)。 缺省值为 32。

BLOCKSIZE 在 Db2 pureScale 环境 中不受支持 (SQLSTATE 56038)。

注意

  • 只能动态 (立即) 更改缓冲池大小。 所有其他更改都将延迟,并且只有在重新激活数据库之后才会生效。
  • 如果以延迟方式执行该语句,尽管缓冲池定义是事务性的,并且对缓冲池定义所作的更改将反映在落实时的目录表中,那么对实际缓冲池所作的任何更改都不会生效,直到下次启动数据库为止。 在此之前,缓冲池的当前属性将存在,并且在此期间不会对缓冲池产生任何影响。 在新数据库分区组的表空间中创建的表将使用缺省缓冲池。 当该关键字适用时,缺省情况下该语句为 IMMEDIATE。
  • 机器上应该有足够的实内存来满足所有缓冲池的总计以及其余数据库管理器和应用程序需求。
  • 语法替代方案为了与 Db2® 以前的版本和其他数据库产品兼容,支持以下语法替代方案。 这些备用项是非标准的,不应使用。
    • 可以指定 DBPARTITIONNUM 或 NODE 来代替 MEMBER ,但 DB2_ENFORCE_MEMBER_SYNTAX 注册表变量设置为 ON 时除外。
    • 可指定 NODEGROUP 来代替 DATABASE PARTITION GROUP