WEB开发网
开发学院数据库DB2 DB2 9.7: 使用新的 Workload Manager 特性 阅读

DB2 9.7: 使用新的 Workload Manager 特性

 2009-12-18 00:00:00 来源:WEB开发网   
核心提示:开始之前了解本教程提供的内容,以及如何从本教程获得最大收益,DB2 9.7: 使用新的 Workload Manager 特性,关于本教程本教程采用以一种简单的方法来实现 WLM,帮助您轻松地理解基础功能,而且不需要更改程序代码,本教程向您展示了如何利用 DB2 9.7 for LUW 中的新特性,目标本教程教您如何:

开始之前

了解本教程提供的内容,以及如何从本教程获得最大收益。

关于本教程

本教程采用以一种简单的方法来实现 WLM,帮助您轻松地理解基础功能。

目标

本教程教您如何:

理解 DB2 WLM 对象以及它们之间的关系

在服务类定义中使用新的 DB2 9.7 BUFFERPOOL PRIORITY

在工作负载定义中使用新的 DB2 9.7 连接属性通配符

在工作负载定义中使用新的 DB2 9.7 ADDRESS 连接属性

通过新的 DB2 9.7 CPUTIME 度量指标使用阈值

使用服务子类阈值执行 DB2 9.7 服务子类重新映射(也称为优先级时限)

使用一个新的 DB2 9.7 WLM 样例脚本构建分层服务类环境

使用 WLM 过程设置客户端信息

使用 WLM 功能监控环境 —— 短期

使用 WLM 事件监控器监控环境 —— 长期

理解重新映射度量指标

先决条件

本教程面向具有使用 DB2 的经验但不了解 DB2 WLM 特性的数据库管理员(DBA)。

系统需求

要跟随本教程的 WLM 实践,您必须能够访问 DB2 Enterprise Edition for Linux®, UNIX®, and Windows® (DB2 ESE) Version 9.7。

本教程的例子是基于 Windows 环境的。这是为了易于使用,您完全可以将本教程的流程应用到 Linux 或 UNIX 系统上。

本教程的例子使用的文件包含在附带的 WLMLab.zip 下载文件中。从 下载 部分下载 WLMLab.zip 文件并将其解压缩到 Windows C:\ drive。

WLM 特性概述

本文提供 WLM 特性的简单定义,并介绍 DB2 9.7 中的新特性。

WLM 特性的简单定义

DB2 工作负载作为主要控制点,基于工作提交者源,并通过连接属性将工作路由到服务类DB2 服务类作为所有进行中的工作活动的主要资源控制点DB2 阈值基于预测性和响应性元素为发生在数据库或服务类中的所有活动提供数据库行为控制限度DB2 工作操作集(工作操作 > 工作类集 > 工作类)提供区分发生在数据库或服务类中的数据库行为类型(读、写、调用、DML、DDL 和加载)的能力DB2 WLM 监控器和控制功能db2pd 实用程序、表函数、存储过程和事件监控器提供实时和历史监控功能


图 1. DB2 9.5 中的 WLM 特性总结
DB2 9.7: 使用新的 Workload Manager 特性

DB2 9.7 中的新 WLM 特性

连接属性中的通配符

DB2 9.7 中的新特性

通过使用 db2user* 可以避免编写 db2user01、db2user02、db2user03、db2user04、db2user05 和 db2user06 等。

可以通过为一组连接属性提供映射值定义工作负载

为了最大限度地减少脚本编写,您可以对以下连接属性使用通配符:

APPLNAME

CLIENT_USERID

CLIENT_APPLNAME

CLIENT_WRKSTNNAME

CLIENT_ACCTNG

CREATE WORKLOAD "work1" CLIENT_USERID('db2user*');

不能对以下连接属性使用通配符:

SYSTEM_USER

SESSION_USER

SESSION_USER GROUP

SESSION_USER ROLE

新的 ADDRESS 连接属性

除了以上提供的连接属性之外,DB2 9.7 还引入了一个新的连接属性,即 ADDRESS。下面是通过各种语法类型使用该属性的例子:

安全域语法: CREATE WORKLOAD "IPADDR1" ADDRESS(‘mydomain.ibm.com’);

IPv4 语法: CREATE WORKLOAD "IPADDR2" ADDRESS('9.26.53.111');

IPv6 长语法: CREATE WORKLOAD "IPADDR3" ADDRESS('2002:91a:519:13:204:acff:fe57:6135');

IPv6 短语法: CREATE WORKLOAD "IPADDR4" ADDRESS('fe80::202:55ff:fe9a:6eee');

聚合活动

现在,您可以在工作负载级别积累聚合活动数据(DB2 9.5 仅能使用服务类和工作类级别)。

这个新特性有利于:

通过在工作和服务子类之间重新进行映射,工作的优先级可以随着时间延长逐步下降。

可以在工作负载级别收集聚合活动数据,以为在工作负载域中定义的阈值确定最佳的最大值。

粒度监控随着存储需求的降低而增加。

CREATE EVENT MONITOR DB2Activities FOR ACTIVITIES WRITE TO TABLE; 
SET EVENT MONITOR DB2Activities STATE 1; 
CREATE WORKLOAD WORKLD1 APPLNAME('DB2APP1') 
COLLECT AGGREGATE ACTIVITY DATA EXTENDED; <--- New in DB2 9.7

缓冲池 I/O 优先级

您可以使用这个新的 DB2 9.7 特性影响缓冲池中可能由特定 DB2 服务类中的活动占用的分页比例。

您可以指定以下为特定服务类分配的缓冲池优先级的值:

HIGH

MEDIUM

LOW(这是超类的默认值)

WLM 中保留的另一些 DB2 9.5 服务类优先级:

代理 (CPU) 优先级

UNIX 的值范围 -20 - 20

Windows 的值范围 -6 - 6

预抓取 (I/O) 优先级的可能值:

HIGH

MEDIUM

LOW

CREATE SERVICE CLASS “Managers”       
UNDER "Marketing" 
AGENT    PRIORITY 5 
PREFETCH PRIORITY HIGH 
BUFFERPOOL PRIORITY HIGH; <--- New in DB2 9.7         

Linux WLM 集成

DB2 9.5 WLM 服务类将 DB2 处理与 AIX WLM 服务器集成起来。DB2 9.7 现在为 Linux 操作系统提供相同级别的集成。

每个 DB2 服务类都可以与特定的 Linux WLM 服务类关联起来:

DB2 自动将在 DB2 服务类中工作的所有代理与识别到的 Linux WLM 服务类关联起来。

这根据 CPU 使用量提供退费功能。

ALTER SERVICE CLASS "Marketing" 
OUTBOUND CORRELATOR "_DB2_Marketing"; <-- Linux WLM definition

Linux WLM 提供高级的 CPU 管理,以在充分利用资源的同时遵从显式的分配:

CPU 的分配是通过为 Linux WLM 服务类分配 CPU 份额完成的。

可以使用 Linux WLM 界面动态地调整 CPU 份额。

提供从其他服务类中借用未使用 CPU 份额的功能。

为每个 Linux 服务类提供操作系统(OS)级别的数据统计。


图 2. Linux WLM 集成
DB2 9.7: 使用新的 Workload Manager 特性

优先级时限

优先级时限也称为当前进行的活动的时限。

优先级时限可以自动地提升和降低当前进行活动的优先级。例如,您可以使用优先级时限控制长期活动,以改善短期活动的吞吐量。

优先级时限是 Query Patroller 功能的必须代替物。

优先级时限是通过服务类阈值实现的,服务类阈值可以将活动从服务子类重新映射到其他服务子类。


图 3. 新的优先级时限
DB2 9.7: 使用新的 Workload Manager 特性

优先级时限步骤 1:创建服务类层次结构

CREATE SERVICE CLASS WLM_TIERS; 
CREATE SERVICE CLASS WLM_SHORT UNDER WLM_TIERS; 
CREATE SERVICE CLASS WLM_MEDIUM UNDER WLM_TIERS; 
CREATE SERVICE CLASS WLM_LONG UNDER WLM_TIERS;

优先级时限步骤 2:创建重新映射阈值

CREATE THRESHOLD WLM_TIERS_REMAP_SHORT_TO_MEDIUM FOR 
SERVICE CLASS WLM_SHORT UNDER WLM_TIERS ACTIVITIES 
ENFORCEMENT DATABASE PARTITION WHEN 
CPUTIMEINSC > 10 SECONDS CHECKING EVERY 5 SECONDS <--- New in DB2 9.7 
REMAP ACTIVITY TO WLM_MEDIUM; <--- New in DB2 9.7 
 
CREATE THRESHOLD WLM_TIERS_REMAP_MEDIUM_TO_LONG FOR 
SERVICE CLASS WLM_MEDIUM UNDER WLM_TIERS ACTIVITIES 
ENFORCEMENT DATABASE PARTITION WHEN 
CPUTIMEINSC > 10 SECONDS CHECKING EVERY 5 SECONDS <--- New in DB2 9.7 
REMAP ACTIVITY TO WLM_LONG; <--- New in DB2 9.7

优先级时限步骤 3:创建工作类集(识别将要映射的操作)

CREATE WORK CLASS SET WLM_TIERS_WCS 
( WORK CLASS WLM_DML_WC   WORK TYPE DML, 
WORK CLASS WLM_CALL_WC   WORK TYPE CALL, 
WORK CLASS WLM_OTHER_WC WORK TYPE ALL );

优先级时限步骤 4:创建工作操作集(执行主要的活动映射)

CREATE WORK ACTION SET WLM_TIERS_WAS FOR SERVICE CLASS WLM_TIERS 
USING WORK CLASS SET WLM_TIERS_WCS 
( WORK ACTION WLM_DML_WA ON WORK CLASS WLM_DML_WC 
MAP ACTIVITY TO WLM_SHORT, 
WORK ACTION WLM_CALL_WA ON WORK CLASS WLM_CALL_WC 
MAP ACTIVITY TO WLM_SHORT, 
WORK ACTION WLM_OTHER_WC ON WORK CLASS WLM_OTHER_WC 
MAP ACTIVITY TO WLM_MEDIUM );

新的阈值

AGGSQLTEMPSPACE 控制可以在服务子类的所有活动中使用的系统临时表空间的最大值。

CREATE THRESHOLD "Detect High Temp" 
FOR SERVICE CLASS "Marketing" ACTIVITIES 
ENFORCEMENT DATABASE 
WHEN AGGSQLTEMPSPACE > 100 M <--- New in DB2 9.7 
COLLECT ACTIVITY DATA WITHOUT DETAILS 
CONTINUE;

CPUTIME 控制在执行期间某个活动可用于特定数据库分区的处理器时间的最大值。

SQLROWSREAD 控制某个活动可以在特定数据库分区上读取的行数的最大值。

CREATE THRESHOLD DBMAXCPU 
FOR DATABASE ACTIVITIES 
ENFORCEMENT DATABASE PARTITION 
WHEN CPUTIME > 30 SECONDS CHECKING EVERY 5 SECONDS <--- New in DB2 9.7 
STOP EXECUTION;

工作负载域中其他可用阈值

工作负载域中基于活动的阈值已被添加到某些现有的阈值中,并且包含一些新的阈值以更好地控制资源。

这些阈值的用途是避免在分开的服务类中隔离应用程序。

这些阈值是:

ESTIMATEDSQLCOST 指定 DML 活动的最大估计开销。

SQLROWSRETURNED 指定数据服务器能够向客户机返回的最大行数。

ACTIVITYTOTALTIME 活动的最大寿命。

SQLTEMPSPACE 指定 DML 可以在特定数据库分区上使用的最大系统临时表空间。

SQLROWSREAD 是一个新的阈值,它指定 DML 活动可以在任意数据库分区上读取的最大行数。

CPUTIME 是一个新的阈值,它指定某个活动在运行时可以在特定数据库分区上使用的最大组合用户和系统处理器时间。

新的最大值

通过以下最大值,您可以更容易地确定新的 CPUTIME 和 SQLROWSREAD 阈值的值:

act_cpu_time_top 是工作负载、服务类或工作类中的所有活动能够使用的最大处理器时间。

act_rows_read_top 是工作负载、服务类或工作类中的所有活动能够读取的最大行数。

新的 lock_wait_time_top 最大值让您能够确定在特定时间间隔内请求分区工作负载的最大锁定等待时间(毫秒)。

针对重新映射活动的新监控器

您可以使用 3 个新监控器元素来识别重新映射的活动和受影响的服务子类:

num_remaps 表示活动重新映射的时间。

act_remapped_in 计算重新映射到服务子类中的活动的数量。

act_remapped_out 计算从特定服务子类映射出来的活动的数量。

新的 DB2 9.7 样例脚本

以下是 DB2 9.7 中的新的 WLM 样例脚本,用于演示针对数据库的分层服务类配置。

wlmtiersdefault.db2

指向进入的活动的已消耗执行时间

在活动执行期间根据已消耗时间将活动从一个服务子类重新映射到另一个服务子类

演示服务类、工作负载和阈值的使用

wlmtierstimerons.db2

指向进入的活动的估计开销

在活动执行之前根据开销将活动从一个服务子类重新映射到另一个服务子类

wlmtiersdrop.db2

删除在以上脚本创建的 WLM 对象

设置定制工作负载管理环境

遵循这个小节的步骤设置定制工作负载管理环境。

打开 Windows 命令提示符并导航到解压缩 WLMLab.zip 文件的目录。默认情况下该目录为 C:\COBRA_LAB_SCRIPTS\WLM。

输入命令 db2cmd(见图 4)启动 DB2 Command Line Processor(见图 5)。

图 4. 启动 DB2 CLP
DB2 9.7: 使用新的 Workload Manager 特性



图 5. DB2 CLP 窗口
DB2 9.7: 使用新的 Workload Manager 特性

找到并查看您从 WLMLab.zip 解压出来的 SETUP_COBRA_LABS.CMD 和 WLM01.CMD 命令(见图 6)。注意,WLM01.CMD 调用 WLM02.DDL。此外,还要看看 WLM02.DDL。

图 6. 在 Windows Explorer 浏览器中的 SETUP_COBRA_LABS.CMD 和 WLM01.CMD
DB2 9.7: 使用新的 Workload Manager 特性

从 CLP 输入 SETUP_COBRA_LABS.CMD 运行该命令。

注意:本教程的 WLM 实践例子不能用于 DB2 9.7 之前的其他版本。如果您发现在运行 SETUP_COBRA_LABS.CMD 时 GRANTS 失败,这表明您运行的是 DB2 9.7 之前的 DB2 版本。

从 CLP 输入 WLM01.CMD 运行该命令。

WLM01.CMD 命令在其所在的目录中创建一个名为 WLM01_OUTPUT.TXT 的文件,并将其输入写到该文件。查看首次运行该命令的输出结果(见图 7)。



图 7. 首次运行 WLM01.CMD 命令时创建的默认 WLM 环境
DB2 9.7: 使用新的 Workload Manager 特性

注意,还没有为您的数据库定义任何特定的工作负载和服务类等。这是 WLM 的默认外观。

关闭 WLM01_OUTPUT.TXT 文件。

查看 WLM03.CMD 和 WLM04.DB2 文件。WLM03.CMD 调用 WLM04.DB2,而后者将创建一个定制的 WLM 环境。

WLM04.DB2 创建两个工作负载/服务类配置,如以下两个表所示:



工作负载 #1
Name:CLP_Workload_Admin
Identify by:客户机用户 ID —— 登录用户
Service Class:CLP_Serv_Admin
使用默认的预抓取、代理和缓冲池优先级
Sub Srv Class1:CLP_Serv_Admin_HI
使用高级的预抓取、代理和缓冲池优先级
Service Class:CLP_Serv_Admin
使用默认的预抓取、代理和缓冲池优先级
Sub Srv Class2:CLP_Serv_Admin_MED
使用中级的预抓取、代理和缓冲池优先级
Work Act. Set:Admin_Actions
将 WRITE 工作映射到高级子服务类
将 READ 工作映射到中级子服务类




工作负载 # 2
Name:CLP_Workload_User1
Identify by:客户机用户 ID db2user*
Service Class:CLP_Serv_User
使用低级的预抓取、代理和缓冲池优先级


图 8 突出显示了与 DB2 9.7 中的新的 WLM 特性相关的 WLM04.DB2 脚本。

图 8. DB2 9.7 中的新 WLM 特性
DB2 9.7: 使用新的 Workload Manager 特性



DB2 9.7: 使用新的 Workload Manager 特性



DB2 9.7: 使用新的 Workload Manager 特性



DB2 9.7: 使用新的 Workload Manager 特性

从 CLP 输入 WLM03.CMD 运行该命令并创建一个定制的 WLM 环境。

从 CLP 输入 WLM.CMD 再次运行该命令。

再次查看 WLM01_OUTPUT.TXT 文件。现在它反映了 WLM03.CMD 创建的定制 WLM 环境。注意以下与这个定制的 WLM 环境相关的事项:

服务超类、服务子类和工作操作等有一个层次结构。

有一个称为 CLP_Serv_User 的服务超类(见图 9),它不包含任何已定义的服务子类。它唯一的服务子类是 SYSDEFAULTSUBCLASS。

有一个不包含任何服务类的工作负载 IPADDR(它将使用默认值)。

现在,这个脚本创建了阈值和事件监控器。



图 9. WLM03.CMD 创建的定制 WLM 环境
DB2 9.7: 使用新的 Workload Manager 特性

关闭 WLM01_OUTPUT.TXT 文件。

设置显示优先级时限的分层服务类

遵循本小节的步骤,设置一个显示优先级时限的分层服务类。

查看您从 WLMLab.zip 下载文件解压得到的 WLM05.CMD 和 wlmtiersdefault.db2 文件。WLM05.CMD 调用 wlmtiersdefault.db2,后者是一个新的 DB2 9.7 样例脚本(见图 10)。



图 10. WLM05.CMD 调用新的 DB2 9.7 样例脚本 wlmtiersdefault.db2
DB2 9.7: 使用新的 Workload Manager 特性

花些时间查看整个 wlmtiersdefault.db2 脚本能够帮助您更好地理解它的作用。下面列出一些需要注意的事项:

该脚本创建了一个分层 WLM 服务类环境和阈值,阈值将一个服务子类重新映射到另一个服务子类(见图 11)。

图 11. wlmtiersdefault.db2 中的服务超类和服务子类定义
DB2 9.7: 使用新的 Workload Manager 特性

该脚本并没有创建一个工作负载,而是通过修改默认的工作负载以使用新的分层服务类。

该脚本使用阈值从 WLM_SHORT 子类映射到 WLM_MED 子类(见图 12)。

图 12. wlmtiersdefault.db2 中的阈值映射
DB2 9.7: 使用新的 Workload Manager 特性

从 CLP 输入 WLM05.CMD 以运行该命令并创建分层服务环境。

从 CLP 输入 WLM.CMD 再次运行该命令。

再次查看 WLM01_OUTPUT.TXT 文件,它现在反映了 WLM05.CMD 创建的定制 WLM 环境。现在,这个定制的 WLM 环境包含 WLM_TIERS 服务超类及其子类,并且拥有新的服务子类阈值(见图 13)。



图 13. 运行 WLM05.CMD 之后得到的定制 WLM 环境
DB2 9.7: 使用新的 Workload Manager 特性

查看 WLM10.CMD 命令文件。它使用 db2pd 实用程序来在您创建的定制 WLM 环境中查找每个 WLM 对象。WLM10.CMD 还在该命令所在的目录中创建一个名为 WLM10_OUTPUT.TXT 的文件,并将其输出写出到该文件。

从 CLP 输入 WLM10.CMD 运行该命令。

查看 WLM10_OUTPUT.TXT 文件中针对 WLM 对象的 db2pd 报告。目前,大部分统计数据都显示为 0(见图 14),因为您还没在自己的环境中运行任何工作负载。在本教程的后面,您还将再次运行 WLM10.CMD 脚本,并且 db2pd 报告中的统计数据将反映您已经运行了工作负载。



图 14. 显示统计数据为 0 的 WLM10.CMD 输出
DB2 9.7: 使用新的 Workload Manager 特性

关闭 WLM10_OUTPUT.TXT 文件。

为模拟工作负载做好设置

遵循本小节的步骤设置一个显示优先级时限分层的服务类。

找到并查看您从 WLMLab.zip 下载文件解压出来的 WLM20.CMD 和 WLM21.DDL 脚本文件。注意,WLM20.CMD 调用 WLM21.DDL。这些脚本创建一个名为 WLM_SAMPLE_TABLE 的表(见图 15)。然后,这些脚本将 200,000 条记录插入到该表中。创建了表之后,您就可以对它运行工作负载。



图 15. 创建一个可以运行工作负载的样例表
DB2 9.7: 使用新的 Workload Manager 特性

从 CLP 输入 WLM20.CMD 以运行该命令。运行这个命令需要几分钟时间。您可以在命令运行时继续查看本教程的下一个步骤。

Data Studio

如果您喜欢的话,可以使用 Data Studio 产品(比如 Data Studio Administrator)来执行使用 Command Editor 的练习。结果是一样的。

输入 db2ce 启动 DB2 Command Editor。

注意 :Command Editor 是已经在 DB2 9.7 中否定的 Control Center 工具集的一部分,但这些工具仍然受支持并且可用,因此您不必首先学习如何使用 Data Studio 产品(见侧边栏),本教程中的例子将使用 Command Editor 工具。您应该考虑使用新的 GUI 工具集,而不是 Control Center 工具。

在 Command Editor 中,导入从 WLMLab.zip 下载文件解压出来的 WLM30.SQL 的内容(见图 16)。为此,转到菜单栏并选择 Selected -> Open。默认情况下,该文件位于 C:\COBRA_LAB_SCRIPTS\WLM 目录。



图 16. 导入 WLM30.SQL 之后的 Command Editor
DB2 9.7: 使用新的 Workload Manager 特性

在这个例子中,您将以单个或组的形式运行 SQL 语句。注意,不要立即运行整个脚本。为了运行该脚本的单个行,可以在 Command Editor 中高亮显示需要运行的行,然后单击绿色箭头图标运行该语句。

如果您还没有连接到 SAMPLE 数据库,那么在 WLM30.SQL 的顶部高亮显示 CONNECT 语句,然后单击绿色箭头运行它(见图 17)。



图 17. 连接到 SAMPLE 数据库
DB2 9.7: 使用新的 Workload Manager 特性

在标题 #1 Workload -> service class occurrences 下高亮显示第一个查询,然后单击绿色箭头运行它(见图 18)。



图 18. 在 Command Editor 中运行 #1 Workload 查询
DB2 9.7: 使用新的 Workload Manager 特性

通过使用 Command Editor 的 Query Results 查询页面查看查询的结果(见图 19)。



图 19. #1 Workload 查询的结果
DB2 9.7: 使用新的 Workload Manager 特性

关于这些结果,需要注意:

因为您没有运行真正的工作负载,所以结果仅显示您连接到 Command Editor(如果您使用 Data Studio Administrator,很可能得到一个 JDBC 连接)。

您使用的是默认的工作负载 SYSDEFAULTUSERWORKLOAD,它映射到您前面用新的 wlmtiersdefault.db2 样例脚本创建的 WLM_TIERS 服务超类。

在下一个小节中,您将使用一些真正的工作负载,并观察结果的变化。

开始第一个模拟工作负载

遵循本小节的步骤,开始使用第一个模拟工作负载。

找到并查看您从 WLMLab.zip 下载文件解压出来的 WLM22.CMD、WLM28.BAT 和 WLM29.DML 脚本文件。

WLM22.CMD 是您将运行的、模拟服务器工作负载的第一个脚本。它使用您之前创建的 WLM 环境。WLM22.CMD 作为 db2user1 用户进行连接,并且通过一个存储过程设置客户机信息,从而使客户机用户为 db2user1(见图 20)。还可以通过其他方法设置客户机信息,但在这里您必须使用存储过程,因为您通过 CLP 提交工作负载。



图 20. WLM22.CMD 在连接时将客户机设置为 db2user1
DB2 9.7: 使用新的 Workload Manager 特性

WLM22.CMD 脚本的末尾运行 WLM28.BAT 200 次(见图 21)。



图 21. 作为用户 db2user1 运行工作负载模拟脚本 200 次的 WLM22.CMD
DB2 9.7: 使用新的 Workload Manager 特性

WLM28.BAT 脚本调用 WLM29.DML(见图 22)。



图 22. WLM28.BAT 调用 WLM29.DML
DB2 9.7: 使用新的 Workload Manager 特性

WLM29.DML 脚本包含运行 200 次的工作负载。它由各种实用程序调用组成,比如 SELECT(见图 23)、UPDATE、INSERT 和 DELETE 等等。



图 23. WLM29.DML SELECT 语句
DB2 9.7: 使用新的 Workload Manager 特性

转到 CLP 并输入 WLM22.CMD 让 db2user1 用户运行这个工作负载 200 次。

注意:在运行 WLM22.CMD 之前,确保您在前面小节中运行的 WLM20.CMD 脚本已经完成。

开始运行 WLM22.CMD 之后,CLP 窗口在以 db2user1 用户的身份运行工作负载 200 次期间会被锁定(见图 24)。



图 24. db2user1 运行工作负载 200 次
DB2 9.7: 使用新的 Workload Manager 特性

返回到 Command Editor 并运行 #1 Workload -> service class occurrences 查询,然后查看 Query Results 页面(见图 25)。

图 25. 第二次运行 #1 Workload 查询的结果
DB2 9.7: 使用新的 Workload Manager 特性

注意,db2user1 用户被映射到 CLP_Workload_User1 工作负载。这是因为当您使用 WLM04.DB2 脚本创建工作负载时,您在 CLIENT_USERID 连接属性上使用了通配符特性,如下所示:
CURRENT CLIENT_USERID('db2user*')

从 Command Editor 运行 #2 Service class activity counts - In-memory statistics function 查询并查看 Query Results 页面(见图 26)。

图 26. 运行 #2 Service class activity counts 查询的结果
DB2 9.7: 使用新的 Workload Manager 特性

CLP_Workload_User1 工作负载被分配给 CLP_Serv_User 超类,所以 CLP_Serv_User 的完成活动的总数表示由 WLM22.CMD 脚本运行的活动。(您的运行结果得出的实际数量可能与图中显示的不同)。

WLM_TIERS 服务超类的活动总是表示您从 Command Editor(或 Data Studio)运行的任何 SQL。这是因为您的默认工作负载映射到 WLM_TIERS 服务超类,并且您作为分配给默认工作负载的用户进入 Command Editor。您每次在 Command Editor 中运行查询时,活动的数量都会增加。

注意:保持打开运行 WLM22.CMD 的 CLP 窗口,然后运行本教程的其他脚本。不要关闭该窗口。

开始第二个模拟工作负载

遵循本小节的步骤开始使用第二个模拟工作负载。

找到并查看从 WLMLab.zip 下载文件解压出来的 WLM23.CMD 脚本文件。WLM23.CMD 是您将在数据库上运行的第二个模拟工作负载。它和 WLM22.CMD 一样运行 200 次,但使用不同的用户 ID。WLM23.CMD 运行的用户 ID 为 db2cobra(见图 27),这是您用于登录的用户 ID。



图 27. WLM23.CMD 使用用户 ID db2cobra 模拟另一个工作负载
DB2 9.7: 使用新的 Workload Manager 特性

打开第二个 CLP 窗口并输入 WLM23.CMD 以运行启动第二个模拟工作负载的命令。现在,您有两个运行模拟工作负载的 CLP 窗口(见图 28)。



图 28. 两个运行模拟工作负载的 CLP 窗口
DB2 9.7: 使用新的 Workload Manager 特性

由于您在开始第一个和第二个工作负载时消耗了一些时间,db2cobra 运行的次数将比 db2user1 运行的次数少。

返回到 Command Editor 并运行 #1 Workload -> service class occurrences 查询,然后查看 Query Results 页面。

现在的结果包含用户 ID db2cobra,它被映射到 CLP_Workload_Admin 工作负载。这是因为当您使用 WLM04.DB2 脚本创建工作负载时,您在 CLIENT_USERID 连接属性上显式地指定了 db2cobra(当前登录的用户),如下所示:
CURRENT CLIENT_USERID('db2cobra')

从 Command Editor 再次运行 #2 Service class activity counts 查询并查看 Query Results 页面(见图 29)。



图 29. 运行 #2 Service class activity counts 查询的结果
DB2 9.7: 使用新的 Workload Manager 特性

注意,CLP_Serv_Admin 超类的一些活动映射到 CLP_Serv_Admin_HI 子类,而它的另一些活动映射到 CLP_Serv_Admin_MED 子类。这是取决于您使用 WLM04.DB2 脚本为 CLP_Serv_Admin 定义工作操作集的方式。工作操作集将写操作映射到 CLP_Serv_Admin_HI 子类,而将读操作映射到 CLP_Serv_Admin_MED 子类。下一个步骤详细显示了该过程。

从 Command Editor 运行 #3 Work Action Set Activity Count - In-memory statistics function 查询并查看 Query Results 页面(见图 30)。



图 30. 运行 #3 Work Action Set Activity Count 查询的结果
DB2 9.7: 使用新的 Workload Manager 特性

现在,您可以看到 Admin_Actions 工作操作集的 Read_Work 和 Write_Work 类之间的活动的差异。这些结果还显示了来自其他工作负载和服务类的行为如何映射到其他工作操作集中。

注意:让运行 WLM23.CMD 脚本的第二个 CLP 窗口保持打开,然后运行本教程的其他脚本。不要关闭该窗口。

开始第三个模拟工作负载

遵循本小节的步骤开始使用第三个模拟工作负载。

找到并查看从 WLMLab.zip 下载文件解压出来的 WLM24.CMD 脚本文件。WLM24.CMD 是您将在数据库上模拟工作负载运行的第三个脚本。它与 WLM22.CMD 和 WLM23.CMD 一样运行 200 次工作负载,但使用另一个用户 ID。WLM24.CMD 使用用户 db2default 运行。

打开第三个 CLP 窗口并输入 WLM24.CMD 以运行开始第三个模拟工作负载的命令。现在您有 3 个分别以不同用户运行模拟工作负载的 CLP 窗口(见图 31)。



图 31. 运行模拟工作负载的 3 个 CLP 窗口
DB2 9.7: 使用新的 Workload Manager 特性

从 Command Editor 再次运行 #1 Workload -> service class occurrences 查询并查看 Query Results 页面。

现在的结果包含 db2default 用户 ID,它映射到您使用 WLM04.DB2 脚本创建的默认工作负载 SYSDEFAULTADMWORKLOAD。

从 Command Editor 再次运行 #2 Service class activity counts 查询,然后查看 Query Results 页面(图 32)。



图 32. 运行第三个 #2 Service class activity counts 查询的结果
DB2 9.7: 使用新的 Workload Manager 特性

db2default 用户的活动映射到您使用 wlmtiersdefault.db2 脚本定义的 WLM_TIERS 服务超类的 WLM_SHORT 服务子类。WLM_SHORT 服务子类开始完成更多的活动,因为 db2default 用户现在也完成该服务子类中的大部分工作。

您还可能会看到一些活动失败了。这是因为这些活动对其他活动是锁定的,一定时间之后就会超时。

从 Command Editor 运行 #4 long query to test activity remapping 查询。

这个查询专门编写得低效一些,它需要超过 5 秒钟才能运行完毕。这比在 wlmtiersdefault.db2 脚本中定义的阈值要大,因此该活动将从 WLM_SHORT 服务子类重新映射到 WLM_MEDIUM 服务子类。

在 #4 long query to test activity remapping 完成之后,再次运行 #2 Service class activity counts 查询并查看 Query Results 页面(见图 33)。



图 33. 运行 #2 Service class activity counts 查询的结果
DB2 9.7: 使用新的 Workload Manager 特性

这些结果显示一个活动被从 WLM_SHORT 重新映射到 WLM_MEDIUM 服务子类。活动达到了 WLM_SHORT 阈值是发生重新映射的原因。这是 DB2 9.7 中的新特性。

注意:保持运行 WLM24.CMD 脚本的第三个 CLP 窗口打开,并运行本教程的其他剩余脚本。不要关闭该窗口。

处理事件监控器

遵循本小节的步骤,了解如何使用 WLM 事件监控器。

从 Command Editor 高亮显示并运行 CALL WLM_COLLECT_STATS() 存储过程(见图 34)。



图 34. 收集事件监控器统计数据的存储过程
DB2 9.7: 使用新的 Workload Manager 特性

要查看 CALL WLM_COLLECT_STATS() 存储过程对常驻型统计数据的影响,请转到 Command Editor 并再次运行 #2 Service class activity counts 查询,然后查看 Query Results 页面。

注意,该存储过程将您的常驻型计数器重置为 0。

要查看 CALL WLM_COLLECT_STATS() 存储过程对活动 WLM 事件监控器的影响,请转到 Command Editor 并运行 #5 Workload event monitor summary table select 查询,然后查看 Query Results 页面。

这些结果显示第一个事件监控器表 WLSTATS_DB2STATISTICS,并标明该存储过程将当前的统计数据写到您的所有活动 WLM 事件监控器。

从 Command Editor 运行 #6 Workload aggregate event monitor summary table select 查询,然后查看 Query Results 页面(见图 35)。



图 35. 运行 #6 Workload aggregate event monitor summary table select 查询的结果
DB2 9.7: 使用新的 Workload Manager 特性

这个查询显示了新的 DB2 9.7 特性,它使您能够在工作负载级别聚合活动数据。注意,这些结果仅显示两个工作负载的聚合信息。这是因为您在使用 WLM04.DB2 创建定制的 WLM 环境时仅定义两个收集统计数据的工作负载(见图 36)。



图 36. 在 WLM04.DB2 中定义的聚合活动信息收集
DB2 9.7: 使用新的 Workload Manager 特性

从 Command Editor 运行 #7 Service Class event monitor summary table select 查询,并查看 Query Results 页面。

从 Command Editor 运行 #8 Work Action Set event monitor summary table select 查询,并查看 Query Results 页面。

从 Command Editor 运行 #9 Threshold violations event monitor summary table select 查询,并查看 Query Results 页面(见图 37)。



图 37. 运行 #9 Threshold violations event monitor summary table select 查询的结果
DB2 9.7: 使用新的 Workload Manager 特性

这个查询显示了一个阈值违反事件监控器,它导致了重新映射操作。这是 DB2 9.7 中的新特性。

使用 db2pd 实用程序

遵循本小节的步骤,了解如何使用 db2pd 实用程序和完整的表查询。

打开第 4 个 CLP 窗口并输入 WLM10.CMD 运行调用 db2pd 实用程序的命令。打开 WLM10_OUTPUT.TXT 文件查看来自 db2pd 实用程序的输出(见图 38)。



图 38. 显示当前工作负载统计数据的 WLM10.CMD 输出
DB2 9.7: 使用新的 Workload Manager 特性

您在前面设置分层服务类时使用的就是 WLM10.CMD 命令。先前,WLM10_OUTPUT.TXT 表明您没有任何工作负载。但是现在您拥有了工作负载。

返回到 Command Editor 并运行 WLM30.SQL 文件末尾提供的查询(见图 39),然后查看对应的 Query Results 页面。这使您能够查看来自完整的表查询的结果。



图 39. WLM30.SQL 末尾的完整表查询
DB2 9.7: 使用新的 Workload Manager 特性

结束语

DB2 9.7 LUW Workload Manager 是一个强大并且易于使用和定制的特性,您可以在自己的环境中使用它,以确保满足服务水平协议以及其他管理或用户需求。它使您能够控制复杂数据库工作负载的使用,而且不需要更改程序代码。本教程向您展示了如何利用 DB2 9.7 for LUW 中的新特性,比如服务类优先级时限、连接属性通配符、地址连接属性和服务类缓冲池 I/O 优先级。

本文示例源代码或素材下载

Tags:DB 使用 Workload

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接