如果您正在使用的 DB2® 数据库产品具有内存使用量限制或者您将内存使用量设为特定值,那么此参数指定可以为数据库分区分配的最大内存量。否则,AUTOMATIC 设置将允许实例内存根据需要而增加。
- 配置类型
- 数据库管理器
- 适用于
-
- 带有本地客户机和远程客户机的数据库服务器
- 带有本地客户机的数据库服务器
- 带有本地客户机和远程客户机的分区数据库服务器
- 参数类型
- 可联机配置
- 缺省值 [范围]
- AUTOMATIC[0 - 系统内存容量]
已安装产品的 DB2 许可证内存限制进一步限制最大值。32 位实例也被限制为最大 1000000。
- 计量单位
- 页 (4 KB)
- 分配时间
- 不适用
- 释放时间
- 不适用
instance_memory
的缺省值为 AUTOMATIC。AUTOMATIC 设置将导致在激活数据库分区时计算值。计算值介于系统上的系统内存容量的 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 共享内存大小中所占的份额。