DB2 V10.1 for Linux, UNIX, and Windows

instance_memory -“实例内存”配置参数

如果您正在使用的 DB2® 数据库产品具有内存使用量限制或者您将内存使用量设为特定值,那么此参数指定可以为数据库分区分配的最大内存量。否则,AUTOMATIC 设置将允许实例内存根据需要而增加。

配置类型
数据库管理器
适用于
  • 带有本地客户机和远程客户机的数据库服务器
  • 带有本地客户机的数据库服务器
  • 带有本地客户机和远程客户机的分区数据库服务器
参数类型
可联机配置
缺省值 [范围]
AUTOMATIC[0 - 系统内存容量]

已安装产品的 DB2 许可证内存限制进一步限制最大值。32 位实例也被限制为最大 1000000。

计量单位
页 (4 KB)
分配时间
不适用
释放时间
不适用

instance_memory 的缺省值为 AUTOMATICAUTOMATIC 设置将导致在激活数据库分区时计算值。计算值介于系统上的系统内存容量的 75% 到 95% 之间 - 系统越大,此百分比越高。对于具有内存使用量限制的 DB2 数据库产品,计算值也会受到产品许可证允许的最大值的限制。对于具有多个逻辑数据库分区的数据库分区服务器,此计算值是除以逻辑数据库分区数而获得的值。

从 V9.7 FP1 和 V9.5 FP5 开始,对于没有内存使用量限制的 DB2 数据库产品,AUTOMATIC 设置的计算值不会对实例中分配的内存施加限制。对于 V9.7 和 V9.5 FP4 或更低版本,AUTOMATIC 设置的计算值表示对于所有 DB2 数据库产品的限制。

动态更新 instance_memory
  • 要动态更新 instance_memory,需要连接实例。有关详细信息,请参阅 ATTACH 命令。
  • 对于具有内存使用量限制的 DB2 数据库产品,要动态更新 instance_memory,必须指定一个小于任何许可证限制的值,或者指定 AUTOMATIC。否则,更新将失败并且返回 SQL5130N 错误消息。
  • 要动态更新 instance_memory,必须指定一个小于系统内存容量的值,或者指定 AUTOMATIC。否则,将延迟到发出下一个 db2start 命令时才会更新,并且将返回 SQL1362W 警告消息。
  • 要动态更新 instance_memory,必须指定一个大于当前正在使用的实例内存量的值。否则,将延迟到重新启动该实例时才会更新,并且将返回 SQL1362W 警告消息。通过将 db2pd -dbptnmem 命令输出中的当前使用量值减去已高速缓存的内存值,就可以确定正在使用的实例内存量。最小值将为所有数据库分区中正在使用的最大实例内存量。
  • 如果 instance_memory 设置为大于系统内存容量的值,那么您发出的下一个 db2start 命令将失败,并且将返回 SQL1220N 错误消息。
  • 如果将 instance_memory 动态更新为 AUTOMATIC,那么将立即重新计算值。
分区数据库环境中的实例的限制
您不应对分区数据库环境中的 instance_memory 使用特定值。在分区数据库环境中,建议不要对 instance_memory 使用特定值,这是因为 instance_memory 是一个数据库管理器配置参数,不能为不同的数据库分区指定不同的值。因此,很难建立一个适合于所有数据库分区的设置,因为这些数据库分区可能具有不同的内存需求。
控制 DB2 内存消耗:

根据工作负载和配置不同,DB2 内存消耗也将不同。除此之外,如果启用了自调整 database_memory,它也会影响 DB2 内存消耗。当 database_memory 设为 AUTOMATIC,并且自调整内存管理器 (STMM) 处于活动状态时,就启用了自调整 database_memory

如果实例正在一个没有内存使用量限制的 DB2 数据库产品上运行,并且 instance_memory 设为 AUTOMATIC,那么不会强制施加 instance_memory 限制。数据库管理器将根据需要来分配系统内存。如果启用了自调整 database_memory,那么 STMM 将更新配置以获得最佳性能,同时还会监视可用系统内存。通过监视可用内存,可确保不会过量使用系统内存。

如果实例正在一个具有内存使用量限制的 DB2 数据库产品上运行,或者 instance_memory 设为特定值,那么将强制施加 instance_memory 限制。数据库管理器分配的系统内存最多只能为此限制;当达到此限制时,应用程序会接收到内存分配错误。另外还有一些注意事项,如下所示:
  • 如果启用了自调整 database_memory,并且 instance_memory 设为特定值,那么 STMM 将更新配置以获得最佳性能,同时还会保持足够的可用实例内存。这可确保有足够的实例内存可用,以满足易失内存需求。不会监视系统内存。
  • 如果启用了自调整 database_memory,并且 instance_memory 设为 AUTOMATIC,那么在这种情况下将对具有内存使用量限制的 DB2 数据库产品强制施加 instance_memory 限制,并且 STMM 将更新配置以获得最佳性能,同时还会监视可用系统内存和保持足够的可用实例内存。
监视实例内存使用量

使用 db2pd -dbptnmem 命令来显示有关实例内存使用量的详细信息。

使用新的 ADMIN_GET_MEM_USAGE 表函数来获取特定数据库分区或所有数据库分区的 DB2 实例耗用的实例内存总量。此表函数还会返回当前上限值。

分配快速通信管理器 (FCM) 共享内存时,将在每个本地数据库分区的 instance_memory 使用中说明该数据库分区在系统的总 FCM 共享内存大小中所占的份额。