DB2 V9.7 for Linux, UNIX, and Windows

dbheap -“数据库堆”配置参数

可使用此参数来限制为数据库堆分配的最大内存量。对于紧急内存需求,会自动增加额外内存。
在缺省情况下,dbheap 会设置为 AUTOMATIC,这意味着可根据需要增大数据库堆的大小。此增大受 database_memoryinstance_memory 和系统内存限制约束。
配置类型
数据库
参数类型
可联机配置
注: 需要数据库连接。
传播类
立即
缺省值 [范围]
在 Linux 和 UNIX 操作系统上
AUTOMATIC [AUTOMATIC, 32 - 1200]
  • 缺省值为 AUTOMATIC(底层值为 1200)。
在 Windows 操作系统上
AUTOMATIC [AUTOMATIC, 32 - 1200]
  • 在 32 位体系结构上,独立服务器的缺省值为 AUTOMATIC(底层值为 300)。
  • 在 64 位体系结构上,缺省值为 AUTOMATIC(底层值为 600)。
注: 可以在最初创建数据库后通过 DB2® 配置顾问程序来更改缺省值。
计量单位
页 (4 KB)
分配时间
在数据库激活时,会从数据库内存保留 dbheap 的底层值或固定值以及针对紧急需求的内部内存限额。会根据需要分配数据库堆。
释放时间
当内存分配不再需要时,会将其释放。当取消激活数据库时,会释放数据库堆中的所有已分配内存。

每个数据库都有一个数据库堆,并且它用于各种用途,这些用途对于支持数据库范围的活动很关键。在数据库激活时,会对许多已知需求(例如日志缓冲区)进行求值。这些内部需求连同已配置的底层或固定 DBHEAP 值会对初始数据库内存大小调整产生影响,并且会设立针对数据库堆进行的数据库内存预留。不是内部计算的一部分的额外需求包括用于表元数据的高速缓存,该元数据会随着对表的访问累积。

数据库堆需求依赖于各种因素(其中包括数据库设计、应用程序活动和配置)。建议您将设置保留为处于 AUTOMATIC 级别,并且带有很小的底层值(例如缺省值)。会根据数据库内存溢出情况分配超出初始预留的数据库堆需求。当从较低发行版迁移至 DB2 V9.5 或更高版本时,或当应用来自 DB2 配置顾问程序的建议时,dbheap 设置会更改为 AUTOMATIC

以下是其中一些关键的内存需求:
  • 大小为 LOGBUFSZ 的日志缓冲区,它是在数据库激活时分配的。这是内部数据库堆限额的一部分。
  • 对于访问的每个压缩表,大约会分配 100KB。如果正在使用表分区,那么此量是根据表分区确定的。这些内存需求没有包括在初始数据库堆大小调整中,必须包括在任何固定 dbheap 值中。在数据库处于活动状态时,会高速缓存此元数据。
  • 如果 AUDIT_BUF_SIZE 设置为非零值,那么在数据库激活期间,会分配两个所指定大小的缓冲区。这包括在内部数据库堆限额中。
  • 针对两个 HADR 缓冲区的限额是为初始数据库堆预留设立的。例如,如果 DB2_HADR_BUF_SIZE 设置为 256000 4KB 页,那么会将大约 2GB 从数据库内存添加至初始数据库堆预留。这是内部数据库堆限额的一部分,并且会在主数据库和备用数据库上进行,以支持故障转移操作所需的资源。

监视

可通过使用 MON_GET_MEMORY_POOL 表函数来监视数据库堆使用情况。例如,在下列查询中:
select memory_pool_used, memory_pool_used_hwm
from table (mon_get_memory_pool(null,null,null))
where memory_pool_type='DATABASE'
会返回 memory_pool_usedmemory_pool_used_hwm 的值:
MEMORY_POOL_USED     MEMORY_POOL_USED_HWM
-------------------- --------------------
           140574720            140574720

  1 record(s) selected.

还可使用 db2pd -db <database_name> -mempools 命令。