DB2 V9.7 for Linux, UNIX, and Windows

配置内存和内存堆

借助简化的内存配置功能,可以通过使用大多数与内存相关的配置参数的缺省 AUTOMATIC 设置来配置 DB2® 数据服务器需要的内存和内存堆,因此需要进行的调整工作更少。

简化的内存配置功能提供下列好处:
  • 可以使用单个参数 instance_memory 来指定数据库管理器允许从其专用和共享内存堆中分配的所有内存。另外,可以使用 appl_memory 配置参数来控制 DB2 数据库代理程序分配的用于为应用程序请求提供服务的最大应用程序内存量。
  • 不需要手动调整仅用于功能内存的参数。
  • 可以使用“内存可视化器”来查询数据库管理器的专用内存堆和共享内存堆当前正在消耗的总内存。还可以使用 db2mtrk 命令来监视堆使用情况,并使用 ADMIN_GET_DBP_MEM_USAGE() 表函数来查询内存消耗总量。
  • 缺省 DB2 配置需要较少调整,将有利于您创建的新实例。
下表列示了其值缺省为 AUTOMATIC 设置的内存配置参数。需要时也可以动态配置这些参数。请注意,AUTOMATIC 设置的含义对于每个参数来说都不同,如最右边的列中所述。
表 1. 其值缺省为 AUTOMATIC 的内存配置参数
配置参数名称 描述 AUTOMATIC 设置的含义
appl_memory 控制 DB2 数据库代理程序分配的用于为应用程序请求提供服务的最大应用程序内存量。 如果强制施加了 instance_memory 限制,那么在数据库分区所分配的内存总量未超过 instance_memory 限制的情况下,AUTOMATIC 设置将允许所有应用程序内存请求。否则,只要有系统资源可用,它就会允许请求。
applheapsz 在 V9.5 之前,此参数指的是为应用程序工作的每个数据库代理程序可以消耗的应用程序内存量。在 V9.5 中,此参数指的是整个应用程序可以消耗的应用程序内存总量。对于分区数据库环境、集中器或 SMP 配置而言,这意味着除非使用 AUTOMATIC 设置,否则可能需要增大在先前发行版中使用的 applheapsz 值。 AUTOMATIC 设置允许应用程序堆大小根据需要增大。如果存在 appl_memory 限制或 instance_memory 限制,就可能会强制施加限制。
database_memory(在 V9.5 之前,缺省设置 AUTOMATIC 仅适用于 Windows 和 AIX® 平台。对于 V9.5,AUTOMATIC 是所有 DB2 服务器产品的缺省设置。) 指定为数据库共享内存区域保留的共享内存量。 当内存调整器处于启用状态时,它确定数据库的整体内存需求并根据当前数据库需求增大或减小分配给数据库共享内存的内存量。
dbheap 确定数据库堆使用的最大内存。 AUTOMATIC 设置允许数据库堆根据需要增大。如果存在 database_memory 限制或 instance_memory 限制,就可能会强制施加限制。
instance_memory 如果您使用的是具有内存使用量限制的 DB2 数据库产品,或者您将此参数设置为特定值,那么此参数指定可以为数据库分区分配的最大内存量。 AUTOMATIC 设置允许整个数据库管理器实例所消耗的内存总量根据需要增大,并且 STMM 确保有足够的系统内存可用以防止过量使用内存。对于具有内存使用量限制的 DB2 数据库产品,AUTOMATIC 设置将根据计算值(75-95% 的 RAM)与许可证允许的内存使用量这两者当中的较小者来强制施加限制。有关何时将它强制施加为限制的详细信息,请参阅 instance_memory
mon_heap_sz 确定分配给数据库系统监视器数据的内存量(以页计)。 AUTOMATIC 设置允许监视器堆根据需要增大。如果存在 instance_memory 限制,就可能会强制施加限制。
stat_heap_sz 指示使用 RUNSTATS 命令收集统计信息时所使用的最大堆大小。 AUTOMATIC 设置允许统计信息堆大小根据需要增大。如果存在 appl_memory 限制或 instance_memory 限制,就可能会强制施加限制。
stmtheap 指定语句堆的大小,SQL 或 XQuery 编译器将语句堆用作工作空间来编译 SQL 或 XQuery 语句。 AUTOMATIC 设置允许语句堆根据需要增大。如果存在 appl_memory 限制或 instance_memory 限制,就可能会强制施加限制。
注: DBMCFG 和 DBCFG 管理视图检索所有数据库分区中当前连接的数据库的数据库管理器配置参数信息。对于 mon_heap_szstmtheapstat_heap_sz 配置参数,此视图上的 DEFERRED_VALUE 列不会在数据库激活中持久存在。也就是说,在发出 get dbm cfg show detailget db cfg show detail 命令时,查询输出将显示内存中已更新的值。
下表显示了在升级或创建实例期间以及在升级或创建数据库期间,各个配置参数是否设置为缺省的 AUTOMATIC 值。
表 2. 在实例和数据库升级以及创建期间将设置为 AUTOMATIC 的配置参数
配置参数 在升级或创建实例之后设置为 AUTOMATIC 在升级数据库之后设置为 AUTOMATIC 在创建数据库之后设置为 AUTOMATIC
applheapsz1   X X
dbheap   X X
instance_memory X    
mon_heap_sz1 X    
stat_heap_sz1   X X
stmtheap1     X
在更改为简化的内存配置过程中,不推荐使用下列元素:
  • 配置参数 appgroup_mem_szgroupheap_ratioapp_ctl_heap_sz。这些配置参数已替换为新的 appl_memory 配置参数。
  • db2mtrk 内存跟踪程序命令的 -p 参数。此选项列示专用代理程序内存堆,它已替换为列示所有应用程序内存消耗的 -a 参数。

“内存可视化器”使用新的 appl_memory 配置参数来显示数据库消耗的最大应用程序内存,并使用已更新的 instance_memory 配置参数来显示实例所消耗的最大内存。“内存可视化器”还显示允许 AUTOMATIC 设置的所有配置参数的值。对于 V9.5 的数据库,“内存可视化器”中不会显示不推荐使用的配置参数的值,但是对于较早版本的数据库显示了这些配置参数的值。