DB2 V9自动自调整内存详解

摘要  本文重点介绍在DB2® V9中如何使用自动自调整内存,包括如何启用自调整内存,禁用自调整内存以及自调整内存相关的几个内存配置参数等。 IBM的DB2 V9 引入了自动自调整内存管理,自适应的自调整内存功能通过自动设置内存配置参数值以及调整缓冲池大小来简化内存配置任...显示全部
摘要

  本文重点介绍在DB2® V9中如何使用自动自调整内存,包括如何启用自调整内存,禁用自调整内存以及自调整内存相关的几个内存配置参数等。
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

•database_memory(其 AUTOMATIC 设置仅在 AIX® 和 Windows® 操作系统上受支持。在其他平台上,database_memory 的缺省值是 COMPUTED)。

    自适应的自调整内存功能通过自动设置内存配置参数值以及调整缓冲池大小来简化内存配置任务。启用此功能后,内存调整器就会在几个内存使用者(包括:排序、程序包高速缓存、锁定列表和缓冲池)之间动态地分配可用内存资源。

    可以对下列内存使用者启用自调整(把相应的参数设置为 AUTOMATIC):

•缓冲池(由 ALTER BUFFERPOOL 和 CREATE BUFFERPOOL 语句指定AUTOMATIC属性)。

•程序包高速缓存(由 pckcachesz 配置参数控制)。

•锁定内存(由 locklist 和 maxlocks 配置参数控制)。

•排序内存(由 sheapthres_shr 和 sortheap 配置参数控制)。

•数据库共享内存(由 database_memory 配置参数控制)。

    接下来我们通过具体的例子来看一下如何使用自动自调整内存。
启用自调整内存功能

    首先我们创建一个单一分区数据库MYDB1,由于默认情况下,单一分区数据库启用自调整内存功能,所以我们创建的示例数据库MYDB1就启动了自动自调整内存功能,其数据库参数self_tuning_mem被自动设置成了ON,并把程序包高速缓存、锁定内存、排序内存和数据库共享内存等内存使用者默认启动了自动自调整内存功能,默认创建的缓冲池IBMDEFAULTBP也启用了自调整内存功能。我们在DB2CMD窗口中,发出CREATE DB 命令,创建示例数据库MYDB1具体如清单1所示:

--清单 1. 创建启用自动自调整内存的示例数据库MYDB1
C:>DB2 CREATE
DATABASE MYDB1DB20000I  CREATE DATABASE命令成功完成。

    我们通过GET DB CFG命令查看示例数据库MYDB1的配置参数,会发现其自调整内存参数(self_tuning_mem)被设置成了ON,数据库共享内存大小(DATABASE_MEMORY) 、 锁定列表的最大存储量参数(LOCKLIST)、 每个应用程序的锁定百分比列表参数(MAXLOCKS)、 程序包高速缓存大小参数(PCKCACHESZ)、 共享排序的排序堆域值参数(SHEAPTHRES_SHR)和 排序列表堆参数(SORTHEAP)都被设置成了AUTOMATIC,表示这些参数启用自动自调整内存,另外数据库内存阈值参数(DB_MEM_THRESH)被设置成了10。收起
参与6

回答者

niehaibo 最近回答过的问题

回答状态

  • 发布时间:2009-01-07
  • 关注会员:0 人
  • 回答浏览:1001
  • X社区推广