IBM的DB2 V9 引入了自动自调整内存管理,自适应的自调整内存功能通过自动设置内存配置参数值以及调整缓冲池大小来简化内存配置任务。启用此功能后,内存调整器就会在几个内存使用者(包括:排序、程序包高速缓存、锁定列表和缓冲池)之间动态地分配可用内存资源,从而简化了内存配置参数调整的工作量。本文重点介绍在DB2® V9中如何使用自动自调整内存,包括如何启用自调整内存,禁用自调整内存以及自调整内存相关的几个内存配置参数等。
简介
在DB2 V9之前,数据库的内存配置参数和缓冲池都是由管理员手工设置的。而数据库的工作负载很少是静态的,而是动态变化的。比如,当工作负载类型发生变化(由事务型变成了混合型等)、用户增加、维护任务的运行或者其它应用程序消耗的资源变化等,都会造成工作负载在不停的变化。因此,即便是资深的数据库管理员调优过的系统,在另一个时候也未必是最优的。数据库管理员需要根据变化随时做出调整,工作量大而效果也不明显。变化可能在很短的时间内发生,因此留给数据库管理员作出响应的时间很短。数据库内存设置尤其容易受这些变化的影响,因而会严重影响响应时间。
现在,从IBM® DB2®版本 9 开始,新的内存调整功能自动设置若干内存配置参数值,从而简化了内存配置任务。启用此功能后,内存调整器就会在几个内存使用者(包括排序、程序包高速缓存、锁定列表和缓冲池)之间动态地分配可用内存资源。内存调整器对工作负载特征的显著更改作出响应,从而调整内存配置参数值和缓冲池大小以优化性能。
本文重点介绍在DB2® V9中如何使用自动自调整内存。
我们将按照下列顺序介绍自动自调整内存:
•自动自调整内存概述
•启用自动自调整内存
•与自调整相关的内存管理参数
•禁用自动自调整内存
自动自调整内存概述
DB2 V9的自动自调整内存功能能够简化若干个内存配置参数的调整。除了简化内存配置任务之外,此新增的自适应的自调整内存功能通过提供更高的配置来提高性能,该配置可以动态响应工作负载特征中出现的重要变化。自调整内存管理器使用智能控制和反馈机制来跟踪工作负载特征、内存消耗以及对数据库中各种共享资源的需求的变化,并根据需要动态调整它们对内存的使用。例如,如果排序操作需要更多的内存,而一些缓冲池又有多余的内存,那么内存管理器会释放多余的缓冲池内存,并将它分配给排序堆。
缺省情况下,已对单一分区数据库启用自调整内存功能,并对多分区数据库禁用此功能。也就是说,在 V9.1 中创建单一分区数据库时,self_tuning_mem 数据库配置参数会自动设置为 ON,如果不需要启用自调整内存管理器,则可在创建数据库之后通过将 self_tuning_mem 配置参数设置为 OFF 来关闭该管理器;在 DPF 系统上不会默认启用自调整内存管理器。
在 Windows® 和 AIX® 平台上(也仅在这两个平台上),自调整内存功能还可确定数据库内存的总需求,并会动态地对数据库共享内存的总体使用情况进行调整。这使数据库管理器可以根据工作负载的需要消耗更多物理内存,而在数据库内存需求降低时将这些内存释放到操作系统中。
另外,如果将数据库从 V8 迁移至 V9.1,则不会自动启用此功能。要在已迁移的数据库中使用此功能,必须手工启用它。可以通过将 self_tuning_mem 配置参数设置为 ON 并将下列某些或全部配置参数设置为 AUTOMATIC 来启用自调整内存:
•pckcachesz
•locklist 和maxlocks
•sortheap 和sheapthres_shr
•