DB2 WLM要点

WLM奥义:关键的一点就在于:给某一个动作设置一个阀值

1.查看信息的方法(具体的请看下Infocenter里相关的编目表的内容)
–直接通过db2look
[db2inst1@localhost ~]$ db2look -d sample -wlm -o wlm.definitions.out

–查看workload的连接信息
[db2inst1@localhost ~]$ db2 “select * from syscat.workloadconnattr”

–查看有哪些service class
[db2inst1@localhost ~]$ db2 select SERVICECLASSNAME,PARENTSERVICECLASSNAME,ENABLED from syscat.serviceclasses

–查看有哪些threshold
[db2inst1@localhost ~]$ db2 select THRESHOLDNAME,ENABLED from syscat.thresholds

–查看有哪些work action
[db2inst1@localhost ~]$ db2 select ACTIONNAME,ACTIONSETNAME,WORKCLASSNAME,ENABLED,ACTIONTYPE from syscat.workactions

–查看有哪些work action set
[db2inst1@localhost ~]$ db2 select ACTIONSETNAME,WORKCLASSSETNAME,ENABLED from syscat.workactionsets

–查看有哪些work classes
[db2inst1@localhost ~]$ db2 select WORKCLASSNAME,WORKCLASSSETNAME from syscat.workclasses

–查看有哪些work classes set
[db2inst1@localhost ~]$ db2 select WORKCLASSSETNAME from syscat.workclasssets

–查看每个能使用workload的权限信息
[db2inst1@localhost ~]$ db2 “select substr(WORKLOADNAME,1,16) as workloadname,substr(GRANTOR,1,16) as grantor,GRANTORTYPE,substr(GRANTEE,1,16) as grantee,GRANTEETYPE,USAGEAUTH from syscat.workloadauth”

–查看定义的workload信息
[db2inst1@localhost ~]$ db2 “select substr(WORKLOADNAME,1,16) as workloadname,CONNATTRTYPE,CONNATTRVALUE from syscat.workloadconnattr”

2.说明
threshold-domain:只的是这个threshold用于什么上面。如果是database,说明这个threshold对数据库内的任意activity都有用。如果是service class,说明对属于这个service class的activity有用。如果是statement,这里可以指明statement的具体语句,说明对这条语句有用。如果是workload,说明对特定的workload有用。

enforcement-scope用于指明计数的方式。比如是整个数据库一起统计,还是单单按照一个workload来统计。

service class不是触发阀值或work action的唯一东西。

USAGE特权:系统给一个connection匹配workload的时候,如果这个session没有这个workload的USAGE特权,则会忽略这个workload,继续查找下一个workload。如果一个都找不到(比如,没有任何的workload特权),那么就会报错。

3.概念
工作负载 workload 用于标识某个活动(通过session名之类的)
工作类 work class 用于通过一些DDL、DML等来标识某个活动。类似于workload的功能,但是区分的方法不同。
工作集 work class set 工作类的集合
数据标记 用做表空间以及存储器组的数据标记。通过工作在执行期间锁访问的数据类型来间接的确定工作。

服务类 service class 可以和阀值、工作负载等绑定。是阀值、工作操作集的监控对象之一。应该是一个逻辑上的概念,比如sales这个用户可以属于一个class。
服务子类 service subclass

阀值 threshold 超过后可以产生一系列动作

工作操作 work action 针对work class set。
工作操作集合 work action set

4.WORKLOAD匹配过程
按照syscat.workloads中的evaluationorder来一次匹配workload,如果有符合条件的,则检查那个用户是否有这个工作负载的USAGE特权,如果有的话,就OK了,如果没有,那么就继续匹配下一个。如果都没有,则会分配给SYSDEFAULTUSERWORKLOAD工作负载。

[db2inst1@HADR01 ~]$ db2 select WORKLOADNAME,EVALUATIONORDER from syscat.workloads

5.sysdefaultadmworkload
这个工作负载是在你无法进行任何操作的时候用的(比如你设置了一个阀值,并行度大于0的时候就停止应用,这样的话你基本上就没法做事情了,包括重新设置并行度的命令也无法执行),这个时候可以用下面的命令将当前的工作负载先设置为sysdefaultadmworkload,然后在改变阀值的定义。
如:
SET WORKLOAD TO SYSDEFAULTADMWORKLOAD
xxxxx
SET WORKLOAD TO AUTOMATIC

6.service class
可以指定给service class多少资源(比如预取的优先级、缓冲池的优先级)等等。同时可以通过表函数查看某个service class中的活动状态来监视性能。

7.练习以及疑问
收集统计信息的几个级别
COLLECT ACTIVITY DATA => 活动结束后,发送信息给event monitor
COLLECT AGGREGATE ACTIVITY DATA => db2 “call wlm_collect_stats()”将内存中的统计信息发送给event monitor,如果信息在内存里,那么用表函数可以查到,如果已经发给了event monitor,那么表函数就查不到啦~因为内存被清零了,这个时候就直接去查表吧

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*