性能
基本性能调整2
Basic Performance Tuning Part 2
Roger Sanders 著
笑熬浆糊 译
天堂鸟自由空间原创作品
天堂鸟自由空间2002-2005版权所有
转载请保持文档的完整性
访问更多可以浏览http://hbird.myrice.com/myself.html
mailto:jackey.wu@163.com
基本性能调整 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, the DB2_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).。如果你想与他取得联系,请致函roger.sanders@netapp.com。