工作类( WORK CLASS )和工作操作( WORK ACTION ) 除了使用工作所在的数据库连接属性标识数据库活动以外,你还可以通过创建可选的工作类,通过基于工作的类型来标识数据库活动。这些类型属性可以是 READ , WRITE , DML , DDL , LOAD , CALL ,ALL。工作类型属性具体的介绍如下:READ...
显示全部工作类( WORK CLASS )和工作操作( WORK ACTION )
除了使用工作所在的数据库连接属性标识数据库活动以外,你还可以通过创建可选的工作类,通过基于
工作的类型来标识数据库活动。这些类型属性可以是 READ , WRITE , DML , DDL , LOAD , CALL ,ALL。工作类型属性具体的介绍如下:
READ此属性对应的活动包括以下语句:
所有的 SELECT 或者 SELECT INTO 语句,并且语句中不包含 DELETE , INSERT , MERGE , UPDATE 语句;所有的 VALUES INTO 语句;所有的 XQuery 语句。WRITE此属性对应的活动包括以下语句:
所有的 UPDATE 语句;所有的 DELETE 语句;所有的 INSERT 语句;所有的 MERGE 语句;所有的包含 DELETE, INSERT, UPDATE 的SELECT 语句;所有的 XQuery 语句。CALL此属性对应的活动包括所有的 CALL 语句。如果想让工作类包含一个 CALL 语句 ,其工作类型可以是 CALL 或者 ALL。
DML所有在 READ 和 WRITE 中出现的语句都是 DML 语句。
DDL此属性对应的活动包括以下语句:
所有的 ALTER 语句;所有的 CREATE 语句;所有的 COMMENT 语句;所有的 DECLARE GLOBAL TEMPORARY TABLE 语句;所有的 DROP 语句;所有的 FLUSH PACKAGE CACHE 语句;所有的 GRANT 语句;所有的 REFRESH TABLE 语句;所有的 RENAME 语句;所有的 REVOKE 语句;所有的 SET INTEGRITY 语句;LOAD此属性对应的活动包括所有的 LOAD 操作。
ALL此属性对应的活动可以是以上属性中出现任意一个活动。
工作操作( WORK ACTION )是一个用来控制某一种类型工作所对应数据库活动的方法。简单的说就是,当数据库活动满足已经定义好的工作类( WORK CLASS )所涉及的范围时,就会触发相应的工作操作( WORK ACTION )。
下面我们在窗口 1 中,发出 CREATE WORK CLASS SET 命令,创建工作类集 myquery,其下包含三个工作类,分别是针对小型查询的 smallquery,针对中型查询的 mediumquery 以及针对大型查询的 largequery,工作类型都是 DML,具体如清单 27 所示:
清单 27 . 在窗口 1 中创建工作类集 C:\> db2 connect to db2test1 user administrator using passw0rd 数据库连接信息 数据库服务器 = DB2 / NT 9.5.0 SQL 授权标识 = ADMINIST . . . 本地数据库别名 = DB2TEST1C:\> db2 - tvf crtWorkClassSet.sqldrop work class set myqueryDB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在SQL 处理期间,它返回:SQL0204N " MYQUERY " 是一个未定义的名称。 SQLSTATE = 42704create work class set myquery (work class smallQuery work type dml for timeroncost from 1 to 1000 , work class mediumQuery work type dml for timeroncost from 1000 to 100000 , work class largeQuery work type dml for timeroncost from 100000 tounbounded )DB20000I SQL命令成功完成。 |
命令成功完成,这样我们就创建了一个工作类集和三个工作类。工作类 smallQuery 包含的范围是:当一个特定的 DML 活动,其估计成本大于 1 timeron 且小于等于 1000 timerons。需要注意的是,成本是由 CPU 成本(以指令数计)和 I/O(以寻道数和页的转换数计)的组合得出的。成本的单位是 timeron。timeron 不直接等于任何实际的所用时间,只是给出粗略估计的资源(成本)。工作类 mediumQuery 包含的范围是:当一个特定的 DML 活动,其估计成本大于 1000 timeron 且小于等于 100000 timerons。工作类 largeQuery 包含的范围是:当一个特定的 DML 活动,其估计成本大于 100000 timeron ,没有上限。
下面我们继续在窗口 1 中创建相应的工作动作集以及工作动作。发出 CREATE WORK ACTION SET 命令,创建工作动作集 MYWORKACTION,并创建面向工作类 smallQuery 的工作动作 smallQueryAction ,面向工作类 mediumQuery 的工作动作 mediumQueryAction,面向工作类 largeQuery 的工作动作 largeQueryAction,具体如清单 28 所示:
清单 28 . 在窗口 1 中创建工作动作集 C:\> db2 - tvf crtWorkActionSet.sqlalter work action set MYWORKACTION alter smallQueryAction disable alter mediumQueryAction disable alter largeQueryAction disableDB20000I SQL命令成功完成。drop work action set MYWORKACTIONDB20000I SQL命令成功完成。create work action set MYWORKACTION for database using work class set MYQUERY ( work action smallQueryAction on work class smallQuery count activity, work action mediumQueryAction on work class mediumQuery collect activity data with details and values , work action largeQueryAction on work class largeQuery when concurrentdbcoordactivities > 1 and queuedactivities > 1 stop execution )DB20000I SQL命令成功完成。 |
命令成功完成。这样我们就创建了 1 个工作动作集和 3 个工作动作。
工作动作集 MYWORKACTION 对应的工作类集 MYQUERY。工作动作 smallQueryAction 对应的工作类是 smallQuery,且指定了 count activity 选项,含义是指定工作类 smallQuery 所对应的数据库活动,只要其任何一个在运行,则这个工作类的计数器就会累积增长。
工作动作 mediumQueryAction 对应的工作类是 mediumQuery,且指定了 collect activity data with details and values 选项,collect activity data 的含义是当工作类 mediumQuery 相关的每一个活动完成后,都将其数据发送给相关合适的事件监控器;with details 的含义是当相关的活动完成后,还要把相关的语句和编译环境发送给相关的时间监控器;and values 的含义是那些活动相关的输入数据值也发送给相关的事件监控器。
工作动作 largeQueryAction 对应的工作类是 largeQuery,且指定了 when concurrentdbcoordactivities > 1 and queuedactivities > 1 stop execution 选项,含义是当并发的数据库协调器活动( database coordinator activities )大于 1 时,数据库管理器将对活动进行排队,对后来的数据库协调器活动(比如一个查询)放入排队队列。并且当排队的活动也大于1时,数据库活动将不允许执行。
收起