基本性能调整 2
Basic Performance Tuning Part 2
Roger Sanders 著
笑熬浆糊 译
天堂鸟自由空间原创作品
天堂鸟自由空间 ©2002-2005 版权所有
转载请保持文档的完整性
访问更多可以浏览 http://hbird.myrice.com/myself.html
mailto:[email protected]
** 基本性能调整 2 **
Roger Sanders 著
笑熬浆糊 译
** 原文出处:《 DB2 Magazine ** ** 》 Quarter 4, 2003 · Vol. 8, Issue 4 **
** 英文原文(由于文章翻译未经授权,请在转载时保留原文链接) **
** _ _ **
怎么样去修改改你的实例以及最好的性能效果的数据库参数的获得。
如果你曾经阅读过 DB2 Magazine Quarter 3, 2003 期 Distribued DBA 栏目 这篇文章的第一部分的话,你就应该知道数据库性能问题将会出现在以下因素的当中一个:
- 系统(环境)配置
- 实例配置
- 数据库配置
- 数据库设计
- 应用程序设计
在前面的那一期中,我谈到了一些一般性的调整建议并且描述了如何使用注册变量在系统级别上去调整 DB2 UDB8.1 for Linux,Unix 和 Windows 版本的性能。(请注意在本文末尾的更正)
在这期中,我将解释实例和可用于 DB2 UDB 数据库的配置参数变量,以 及 V8.1 的新版向导工具的配置。
DB2 UDB 配置参数
DB2 UDB 使用了一个扩展配置参数数组来控制系统资源和数据库资源怎样被分配和使用。
在心中谨记这些提供给与非常简单系统一起产生的大部分这种配置参数的缺省值。( DB2 UDB 的目标就是运行,应该不受这个约束,事实上它可以在任何一个平台上,而不是仅为一特定平台改良的) 。 因此,你通常能极大改进整个系统和数据库性能—— 以很少努力—— 经过改变一个或多个配置参量的值。 实际上,你应该经常的修改 DB2 UDB 配置参数值如果你的数据库环境包含一个或更多的下列:
- 大数据库
- 通常工作在很大数量的并发连接的数据库
- 有高性能要求的一个或更多特别应用
- 特别硬件结构
- 独特的查询或交易装载
- 独特的查询或交易类型。
配置实例
每当实例被创建,一个对应的 DB2 数据库管理配置文件同时也会创建并且初始化。每一个 DB2 数据库管理配置文件包括 68 个不同参数。其中一些参数会对性能产生比较显著的影响;其它的可能影响甚微。表一显示的是一些可能会导致重要性能改进的数据库管理实例配置参数
**_ 表 1 _ ** _ : _ _ 关键 DB2 _ _ 数据库管理配置参数。 _
察看或者修改参数
那么你如何确定 DB2 数据库管理配置参量的当前值 ? 在 DB2 UDB v8.1 中,有二种方式可以察看 DB2 数据库管理配置文件的内容:
使用 DBM 配置对话框,它很容易从控制中心或配置助理中得到;或者执行 DB2 命令行处理器 (CLP) 命令 GET DATABASE MANAGER CONFIGURATION
。
这个命令的语法:
GET DATABASE MANAGER | DB MANAGER | DBM CONFIGURATION | CONFIG | CFG
同样的,一个或多个 DB2 数据库管理器配置参量的具体值也可以使用 DBM 配置对话框,或执行 CLP 命令 UPDATE DATABASE MANAGER CONFIGURATION
来改变;语法如下:
UPDATE DATABASE MANAGER | DB MANAGER | DBM CONFIGURATION | CONFIG | CFG USING Parameter Value,... < IMMEDIATE | DEFERRED >
其中:
Parameter
明确了一个或多个 DB2 数据库管理器配置参量 ( 根据关键字 ) 的值将被修改 。Value
明确了将被分配到指定 DB2 数据库管理器配置参数被指定的新值。
注意:在角括号里( <>
)的参数是可以选择的;圆括号中的变量或者选项择是必须的而且必须备提供的;逗号以及跟随在他后面的省略号 ( ...)
则表明前面的参数可以被重复使用多次。
如果 IMMEDIATE
选项被指定,如果可能的话,所有改变将会立即生效。(不是所有的改变都能立刻被执行的——参见 DB2 UDB Administration 章节 13 —— Performance documentation for more information 。) 如果 DEFERRED
选项选中,变动不会开始有效直到对应的实例被停止和被重新开始。在什么都不指定的情况下, IMMEDIATE
是缺省值。
因此,如果你想要把 DB2 数据库管理器配置参量 INTRA_PARALLEL
的值变成
YES
,只需要是用这条语句来更新数据库管理器配置: UPDATE DBM CFG USING INTRA_PARALLEL YES
。
DB2 数据库配置
像当实例被创建同时 DB2 数据库管理器配置文件被创造和初始化一样;每次新的数据库被创建的同时一个数据库配置文件也被创造和初始化。每个数据库配置文件包括 82 种不同的参数。其中一些对于性能有重大作用,而其他的则影响甚微。 表 2 显示是很可能导致重大性能改善的数据库配置参量。
**_ 表 2 _ ** _ : _ _ 关键数据库配置参量。 _
察看或者改变这些参数
有二种方式察看数据库配置文件的内容:使用数据库配置对话框(比较容易的从控制中心访问),或由执行 CLP 命令 GET DATABASE CONFIGURATION
。语法如下:
GET DATABASE | DB CONFIGURATION | CONFIG | CFG FOR DatabaseAlias
_ DatabaseAlias _ 指明 指明 DB2 UDB 数据库(根据别名)为显示配置参数值。
一个或多个 DB2 数据库配置参量的具体值也可以使用数据库配置对话框,或执行 CLP 命令 UPDATE DATABASE CONFIGURATION
来改变;语法如下:
UPDATE DATABASE | DB CONFIGURATION | CONFIG | CFG FOR DatabaseAlias USING Parameter Value ,... < IMMEDIATE | DEFERRED >
Parameter
明确了一个或多个 DB2 数据库配置参量 ( 根据关键字 ) 的值将被修改 。Value
明确了将被分配到指定 DB2 数据库配置参数被指定的新值。
在这种情况下,如果 IMMEDIATE
选项被指定,如果可能的话,所有改变将会立即生效。 如果 DEFERRED
选项选中,变动不会开始有效直到与数据库的所有现有的连接被终止并且新数据库连接被建立。 IMMEDIATE
选项是缺省值。
举个例子,如果你想要改变 SAMPLE
数据库的 seqdetect 数据库配置参量的价值为 NO
,你可以执行 UPDATE DATABASE CONFIGURATION
语句如下:
UPDATE DB CFG FOR SAMPLE USING SEQDETECT NO
配置向导
鉴于配置参数的选择范围是比较宽广,决定在哪里开始和什么做变动是困难的。幸好, DB2 UDBv8.1 封装了一个工具来帮助你开始你的配置——配置顾问( Configuration Advisor )。 你可以从控制中心访问配置顾问,它被设计用于获取关于你的数据库环境的具体信息并且会基于所获取的信息推荐一些配置参数的改变。由于由配置顾问所做配置变化几乎总会导致性能改善,我推荐在尝试其他配置调整之前使用这个工具。
照这么说,如果你的系统没有配置安装控制中心的话应该怎么办?你既可以利用 db2AutoConfig()
的
API
函数来
开发一个专门的程序来完成相同的功能,也可以是用 AUTOCONFIGURE CLP
命令,这个命令在
DB2 UDB v.8.1 中有介绍,该命令的语法如下:
AUTOCONFIGURE < USING Keyword Value, ... > < APPLY DB ONLY | DB AND DBM | NONE >
- _ Keyword _ 指明显示在表 3 中的一个或多个关键字。
- _ Value _ 指明同关键字联系在一起的值。
表 3 描述了一些可能被这个命令所使用的关键字。
**_ 表 3 _ ** _ : AUTOCONFIGURE _ _ 命令关键字和值。 _
如果被显示在 表 3 中的任何关键字的值不被指定,那么当 AUTOCONFIGURE
命令执行时,这些关键字的缺省值将被使用。另外,如果 APPLY
选项不被指定,所有推荐的配置变化导致当 AUTOCONFIG
命令被执行将会应用于数据库配置,而不是 DB2 数据库管理器配置。
注意: DB2 UDBv8.1 版本的 CREATE DATABASE
命令提供一个 AUTOCONFIGURE
选项他使用与 AUTOCONFIGURE
命令完全相同的关键字和语法
。因此当一个新数据库被创建的时候配置变化可能自动地被执行。
接下来
现在你知道了一些通过修改实例和数据库配置参数值来改进性能的方法。同时你也学会了怎么在配置顾问或者 AUTOCONFIG
命令的帮助下进行一些对于实例和数据库配置调整的尝试性的工作。那么,这就是你需要知道为了得到最佳的 DB2 性能的全部吗 ? 不尽然,在以后的部分中,我将给你们讲述数据库设计在性能上的影响。
更正
本文的第一部分也就是上一期有两个关于 DB2 UDB v.8.1 注册变量的错误信息:
- 在 v.8.1 中,
DB2_HASH_JOIN
的缺省值是 YES ( NO 是 7.2 版本的缺省值)。 DB2_STRIPED_CONTAINERS
不再使用于
8.1
中
。根据 DB2 文档说明: ”In earlier versions of DB2, theDB2_STRIPED_CONTAINERS
registry variable was used to create table spaces with an extent-sized tag. However, because this is now the default behavior, this registry variable no longer has any affect."
关于作者
Roger E. Sanders 是 Network Appliance Inc. 的数据库维护工程师。 并且是几本关于 DB2 UDB 的书的作者,包括 _ DB2 Universal Database v.8.1 Certification Exam 700 Study Guide _ (IBM Press, 2003). 。如果你想与他取得联系,请致函 [email protected] 。