分区数据库环境中的自调整内存功能

在分区数据库环境中使用自调整内存功能时,有一些因素决定该功能是否能适当地调整系统。

对分区数据库启用自调整内存功能时,会将一个数据库分区指定为调整分区,所有内存调整决定都根据该数据库分区的内存和工作负载特征作出。 在该分区中作出调整决策之后,会将内存调整分发到其他数据库分区,以确保所有数据库分区都维护类似的配置。

单调整分区模型假定,仅当所有数据库分区具有类似内存需求时,才会使用该功能。 在确定是否对分区数据库启用自调整内存功能时,请使用下列准则。

建议对分区数据库使用自调整内存功能的情况

当所有数据库分区都具有类似内存需求并且正在类似硬件上运行时,可以不进行任何修改就启用自调整内存功能。 这些类型的环境共享下列特征:
  • 所有数据库分区都在完全相同的硬件上运行,并且多个逻辑数据库分区均匀地分布在多个物理数据库分区中
  • 数据分布情况最佳或者接近最佳
  • 工作负载均匀地分布在各个数据库分区中,这意味着,各个数据库分区中一个或多个堆的内存需求均相同
在这种环境中,如果所有数据库分区的配置相同,那么自调整内存功能将正确地配置系统。

建议对分区数据库使用自调整内存功能并进行限定的情况

在环境中的大部分数据库分区具有类似内存需求并且正在类似硬件上运行的情况下,可以使用自调整内存功能,但进行初始配置时要小心。 这些系统可能有一组数据库分区用于数据,并且有一组少得多的协调程序分区和目录分区。 在这些环境中,将协调程序分区和目录分区配置为与包含数据的数据库分区不同可能会有好处。

应该对所有包含数据的数据库分区启用自调整内存功能,并且应该将其中的一个数据库分区指定为调整分区。 由于协调程序分区和目录分区的配置可能不同,因此应对那些分区禁用自调整内存功能。 要对协调程序分区和目录分区禁用自调整内存功能,请对这些分区将 self_tuning_mem 数据库配置参数设置为 OFF。

建议不要对分区数据库使用自调整内存功能的情况

如果各个数据库分区的内存需求有所不同,或者不同的数据库分区正在极不相同的硬件上运行,那么最好禁用自调整内存功能。 要禁用此功能,请对所有分区将 self_tuning_mem 数据库配置参数设置为 OFF。

比较不同数据库分区的内存需求

确定不同数据库分区的内存需求是否非常相近的最佳方法是查看快照监视器。 如果下列快照元素在所有数据库分区中都相近(差别不超过 20%),那么可以认为这些数据库分区的内存需求极为相近。

通过发出以下命令来收集下列数据:get snapshot for database on <dbname>
Locks held currently                       = 0
Lock waits                                 = 0
Time database waited on locks (ms)         = 0
Lock list memory in use (Bytes)            = 4968
Lock escalations                           = 0
Exclusive lock escalations                 = 0

Total Shared Sort heap allocated           = 0
Shared Sort heap high water mark           = 0
Post threshold sorts (shared memory)       = 0
Sort overflows                             = 0

Package cache lookups                      = 13
Package cache inserts                      = 1
Package cache overflows                    = 0
Package cache high water mark (Bytes)      = 655360

Number of hash joins                       = 0
Number of hash loops                       = 0
Number of hash join overflows              = 0
Number of small hash join overflows        = 0
Post threshold hash joins (shared memory)  = 0

Number of OLAP functions                   = 0
Number of OLAP function overflows          = 0
Active OLAP functions                      = 0
通过发出以下命令来收集下列数据:get snapshot for bufferpools on <dbname>
Buffer pool data logical reads             = 0
Buffer pool data physical reads            = 0
Buffer pool index logical reads            = 0
Buffer pool index physical reads           = 0
Total buffer pool read time (milliseconds) = 0
Total buffer pool write time (milliseconds)= 0