自适应的自调整内存功能通过自动设置内存配置参数值以及调整缓冲池大小来简化内存配置任务。启用此功能后,内存调整器就会在几个内存使用者(包括排序、程序包高速缓存、锁定列表和缓冲池)之间动态地分配可用内存资源。
在 Windows和 AIX平台上,自调整内存功能还可确定数据库内存的总需求,并会动态地对数据库共享内存的总体使用情况进行调整。这使数据库管理器可以根据工作负载的需要消耗更多物理内存,而在数据库内存需求降低时将这些内存释放到操作系统中。
使用 database_memory 配置参数来设置对每个数据库将使用的内存量的限制。
除了简化内存配置任务之外,此新增的自适应的自调整内存功能通过提供更高的配置来提高性能,该配置可以动态响应工作负载特征中出现的重要变化。
缺省情况下,已对单一分区数据库启用自调整内存功能,并对多分区数据库禁用此功能。
自调整内存
从 IBM DB2 版本 9 开始,新的内存调整功能自动设置若干内存配置参数值,从而简化了内存配置任务。启用此功能后,内存调整器就会在几个内存使用者(包括排序、程序包高速缓存、锁定列表和缓冲池)之间动态地分配可用内存资源。
内存调整器对工作负载特征的显著更改作出响应,从而调整内存配置参数值和缓冲池大小以优化性能。
调整器在 database_memory 配置参数定义的内存限制范围内工作。在 Windows和 AIX上,database_memory 值本身可以自动调整。database_memory 启用自调整(设置为 AUTOMATIC)后,调整器确定数据库的整体内存需求并根据当前数据库需求增大或减小分配给数据库共享内存的内存量。例如,如果当前数据库需求很高,并且系统上有足够的可用内存,则数据库共享内存将消耗较多的内存。当数据库内存需求下降时,或者当系统上的可用内存量降至过低水平时,就会释放一些数据库共享内存。
database_memory 参数未启用自调整(未设置为 AUTOMATIC)时,整个数据库都将使用指定的内存量,从而根据需要在数据库内存使用者之间分配内存。database_memory 未启用自调整时,可以通过两种方法指定数据库使用的内存量:将 database_memory 设置为数值或者将其设置为 COMPUTED。在第二种情况下,总内存量是根据数据库启动时的数据库内存堆初始值总计而计算的。
可以对下列内存使用者启用自调整:
- 缓冲池(由 ALTER BUFFERPOOL 和 CREATE BUFFERPOOL 语句控制)
- 程序包高速缓存(由 pckcachesz 配置参数控制)
- 锁定内存(由 locklist 和 maxlocks 配置参数控制)
- 排序内存(由 sheapthres_shr 和 sortheap 配置参数控制)
- 数据库共享内存(由 database_memory 配置参数控制)
可自动调整的配置参数
- sortheap - 排序堆大小配置参数
- sheapthres_shr - 共享排序的排序堆阈值配置参数
- database_memory - 数据库共享内存大小配置参数
- pckcachesz - 程序包高速缓存大小配置参数
- locklist - 锁定列表的最大存储器配置参数
- maxlocks - 升级前锁定列表的最大百分比配置参数