CREATE SERVICE CLASS 语句

CREATE SERVICE CLASS 语句定义服务类。

调用

此语句可以嵌入在应用程序中,也可通过动态 SQL 语句来发出。 它是一个可执行语句,仅当 DYNAMICRULES 运行行为对于程序包有效时才能动态编译 (SQLSTATE 42509)。

权限

语句的授权标识所拥有的特权必须包括 WLMADM 或 DBADM 权限。

语法

读取语法图跳过可视语法图CREATE SERVICE CLASSservice-class-name UNDERservice-superclass-name HARD CPU SHARES 1000HARDSOFTCPU SHARES整数常量 CPU LIMIT整数常量NONEDEGREE SCALEBACK DEFAULT1DEGREE SCALEBACKONOFFMAXIMUM DEGREE DEFAULT2MAXIMUM DEGREENONEdegreePREFETCH PRIORITY DEFAULTPREFETCH PRIORITYHIGHMEDIUMLOWOUTBOUND CORRELATOR NONEOUTBOUND CORRELATORstring-常量BUFFERPOOL PRIORITY DEFAULTBUFFERPOOL PRIORITYHIGHMEDIUMLOWCOLLECT AGGREGATE ACTIVITY DATA NONE3COLLECT AGGREGATE ACTIVITY DATABASEEXTENDEDCOLLECT AGGREGATE REQUEST DATA NONECOLLECT AGGREGATE REQUEST DATABASECOLLECT AGGREGATE UNIT OF WORK DATANONECOLLECT AGGREGATE UNIT OF WORK DATABASECOLLECT REQUEST METRICSNONE4COLLECT REQUEST METRICSBASEEXTENDED5 histogram-template-子句ENABLEDISABLE
collect-activity-clause
读取语法图跳过可视语法图 COLLECT ACTIVITY DATANONECOLLECT ACTIVITY DATAcollect-activity-data-子句
collect-activity-data-clause
读取语法图跳过可视语法图ON COORDINATORMEMBERON ALLMEMBERSWITHOUT DETAILSWITH,DETAILS6SECTIONINCLUDE ACTUALS BASEAND VALUES
histogram-template-clause
读取语法图跳过可视语法图 ACTIVITY LIFETIME HISTOGRAM TEMPLATE SYSDEFAULTHISTOGRAMACTIVITY LIFETIME HISTOGRAM TEMPLATEtemplate-name ACTIVITY QUEUETIME HISTOGRAM TEMPLATE SYSDEFAULTHISTOGRAMACTIVITY QUEUETIME HISTOGRAM TEMPLATEtemplate-name ACTIVITY EXECUTETIME HISTOGRAM TEMPLATE SYSDEFAULTHISTOGRAMACTIVITY EXECUTETIME HISTOGRAM TEMPLATEtemplate-name REQUEST EXECUTETIME HISTOGRAM TEMPLATE SYSDEFAULTHISTOGRAMREQUEST EXECUTETIME HISTOGRAM TEMPLATEtemplate-name ACTIVITY ESTIMATEDCOST HISTOGRAM TEMPLATE SYSDEFAULTHISTOGRAMACTIVITY ESTIMATEDCOST HISTOGRAM TEMPLATEtemplate-name ACTIVITY INTERARRIVALTIME HISTOGRAM TEMPLATE SYSDEFAULTHISTOGRAMACTIVITY INTERARRIVALTIME HISTOGRAM TEMPLATEtemplate-name UOW LIFETIME HISTOGRAM TEMPLATE SYSDEFAULTHISTOGRAMUOW LIFETIME HISTOGRAM TEMPLATEtemplate-name
注意:
  • 1 DEGREE SCALEBACK DEFAULT 选项仅对服务子类有效 (SQLSTATE 5U043)。
  • 2 MAXIMUM DEGREE DEFAULT 选项仅对服务子类有效 (SQLSTATE 5U043)。
  • 3 除 COLLECT ACTIVITY DATA 和 COLLECT REQUEST METRICS 以外的所有 COLLECT 子句仅对服务子类有效。
  • 4 COLLECT REQUEST METRICS 子句仅对服务超类有效。
  • 5 HISTOGRAM TEMPLATE 子句仅对服务子类有效。
  • 6 DETAILS 关键字是要指定的最小值,后跟以逗号分隔的选项。

描述

service-class-name
命名服务类。 这是一部分名称。 这是一个 SQL 标识(普通标识或定界标识)。 如果服务类是服务超类,那么 service-class-name 不得标识目录中已存在的服务超类 (SQLSTATE 42710)。 如果服务类是服务子类,那么 service-class-name 不得标识服务超类下已存在的服务子类 (SQLSTATE 42710)。 如果服务类是服务子类,那么 service-class-name 不得与其服务超类相同 (SQLSTATE 42710)。 此名称不能以字符“SYS”开头 (SQLSTATE 42939)。
UNDER service-superclass-name
指定服务类是服务超类 service-superclass-name的子类。 如果未指定 UNDER ,那么服务类是服务超类。 service-superclass-name 必须标识数据库中存在的服务超类 (SQLSTATE 42704)。 服务超类不能是缺省服务类 (SQLSTATE 5U029)。
HARD CPU SHARES 1000 或 HARD CPU SHARES integer-constantSOFT CPU SHARES integer-constant
指定当工作正在此服务类中执行时,工作负载管理器 (WLM) 分派器分配给此服务类的 CPU 资源份额数。 integer-constant 的有效值是介于 1 和 65535 之间的整数。 缺省值为 HARD CPU SHARES 1000,将 1000 个 共享分配给此服务类。 使用关键字 HARD限定 CPU SHARES ,或者指定 CPU SHARES 而不使用关键字 HARDSOFT限定它,指示要将 CPU 份额分配给此服务类。 指定关键字 SOFT 指示将向此服务类分配 CPU 份额。 要将硬 CPU 份额和软 CPU 份额与 WLM 分派器配合使用,必须启用 wlm_disp_cpu_shares 数据库管理器配置参数。
CPU LIMIT 整数常量 或 CPU LIMIT NONE
指定 WLM 分派器可以分配给此服务类的 CPU 资源的最大百分比。 integer-constant 的有效值是介于 1 与 100 之间的整数。 您还可以指定 CPU LIMIT NONE 以指示没有 CPU 限制。
DEGREE SCALEBACK DEFAULT 或 DEGREE SCALEBACK ON | OFF
指定在此服务类中运行的工作是否可以缩减其程度。 设置为 DEGREE ANY 的查询可能会根据当前 CPU 负载由数据库管理器缩减其实际运行时等级。

缩减运行简单查询的服务类的等级可能会导致更少的争用和提高吞吐量。 对具有复杂查询的服务类禁用等级缩减可帮助确保更一致且可预测的响应时间。 设置 DEFAULT 表示服务子类从父超类继承其 DEGREE SCALEBACK 设置。 DEFAULT 设置仅适用于服务子类。 服务超类的缺省设置为 ON。 服务子类的缺省值为 DEFAULT。

MAXIMUM DEGREE
指定在此服务类中运行的活动的最大运行时并行度。
缺省值
此服务子类从其父超类继承其最大等级值。 此值是服务子类的缺省值。 此设置仅适用于服务子类。
NONE
此服务类未指定已分配应用程序的最大运行时等级。 实际运行时等级确定为 max_querydegree 配置参数值的下限, SET RUNTIME DEGREE 命令设置的值, SQL 语句编译等级和工作负载上设置的 MAXIMUM DEGREE 值。 这是服务超类的缺省值。
degree
指定此服务类的最大并行度。 有效值为 1 到 32767。 实际运行时等级确定为此等级的下限, max_querydegree 配置参数的值, SET RUNTIME DEGREE 命令设置的值, SQL 语句编译等级以及工作负载上设置的 MAXIMUM DEGREE。
预取优先级缺省值 | 高 | 中 | 低
此参数控制服务类中的代理程序可以提交其预取请求的优先级。 有效值为 HIGH , MEDIUM , LOW 或 DEFAULT (SQLSTATE 42615)。 HIGH , MEDIUM 和 LOW 表示将分别向高,中和低优先级队列提交预取请求。 预取程序按从高到低顺序清空优先级队列。 当下一个活动开始时,服务类中的代理程序将在 PREFETCH PRIORITY 级别提交其预取请求。 如果在提交预取请求后更改了 PREFETCH PRIORITY ,那么请求优先级不会更改。 缺省值为 DEFAULT ,它在内部映射到服务超类的 MEDIUM。 如果为服务子类指定了 DEFAULT ,那么它将继承其父超类的 PREFETCH PRIORITY。

不能更改缺省子类的 PREFETCH PRIORITY (SQLSTATE 5U032)。

OUTBOUND CORRELATOR NONE 或 OUTBOUND CORRELATOR string-constant
指定是否将此服务类中的线程与外部工作负载管理器服务类相关联。

If OUTBOUND CORRELATOR is set to a string-常量 for the service superclass and OUTBOUND CORRELATOR NONE is set for a service subclass, the service subclass inherits the OUTBOUND CORRELATOR of its parent. 缺省值为 OUTBOUND CORRELATOR NONE。

出站相关因子无
对于服务超类,指定不存在与此服务类的外部工作负载管理器服务类关联,对于服务子类,指定外部工作负载管理器服务类关联与其父代相同。
出站相关因子 string-constant
指定要用作相关因子以将此服务类中的线程与外部工作负载管理器服务类相关联的 string-constant 。 外部工作负载管理器必须处于活动状态 (SQLSTATE 5U030)。 应设置外部工作负载管理器以识别 string-constant的值。
缓冲池优先级缺省值 | 高 | 中 | 低
此参数控制此服务类中的活动访存的页面的缓冲池优先级。 有效值为 HIGH , MEDIUM , LOW 或 DEFAULT (SQLSTATE 42615)。 与具有较低缓冲池优先级的服务类中的活动所访存的页面相比,具有较高缓冲池优先级的服务类中的活动所访存的页面被换出的可能性较小。 缺省值为 DEFAULT ,它在内部映射到服务超类的 LOW。 如果为服务子类指定了 DEFAULT ,那么它将从其父超类继承 BUFFERPOOL PRIORITY。

不能更改缺省子类 (SQLSTATE 5U032)的缓冲池优先级。

COLLECT ACTIVITY DATA
指定在此服务类中执行的每个活动的相关信息将在活动完成时发送到任何活动活动事件监视器。 缺省值为 COLLECT ACTIVITY DATA NONE。
NONE
指定不应针对在此服务类中执行的每个活动收集活动数据。
ON COORDINATOR MEMBER
指定仅在活动的协调程序 成员 处收集活动数据。
ON ALL MEMBERS
指定要在处理活动的所有 成员 处收集活动数据。 在远程 成员上,随着活动的出现和对这些 成员执行操作,可能会多次捕获该活动的记录。 如果指定了 AND VALUES 子句,那么将仅为协调程序的 成员 收集活动输入值。
WITHOUT DETAILS
指定在服务类中执行的每个活动的相关数据将在活动完成执行时发送到任何活动活动事件监视器。 将不发送有关语句、编译环境和节环境数据的详细信息。
WITH
详细信息
指定将语句和编译环境数据发送到其所属活动的任何处于活动状态的活动事件监视器。 将不发送节环境数据。
SECTION
指定将语句、编译环境、节环境数据和节实际值发送到其所属活动的任何处于活动状态的活动事件监视器。 如果指定了 SECTION,那么必须指定 DETAILS。 将在收集活动数据的任何 成员 上收集部分实际值。
INCLUDE ACTUALS BASE
指定还应在收集活动数据的任何分区上收集分段实际值。 要收集分段实际值,必须指定 INCLUDE ACTUALS 子句或必须设置 section_actuals 数据库配置参数。

The effective setting for the collection of section actuals is the combination of the INCLUDE ACTUALS clause, the section_actuals database configuration parameter, and the <collectsectionactuals> setting specified on the WLM_SET_CONN_ENV routine. For example, if INCLUDE ACTUALS BASE is specified, yet the section_actuals database configuration parameter value is NONE and <collectsectionactuals> is set to NONE, then the effective setting for the collection of section actuals is BASE.

BASE 指定在活动执行期间应启用并收集以下内容:
  • 基本运算符基数计数
  • 引用的每个对象的统计信息(仅限 DML 语句)
AND VALUES
指定将输入数据值发送到其所属活动的任何处于活动状态的活动事件监视器。 此数据不包含使用 REOPT ALWAYS 绑定选项编译的 SQL 语句。
COLLECT AGGREGATE ACTIVITY DATA
指定应该针对此服务类捕获聚集活动数据并将其发送到统计信息事件监视器 (如果有活动数据)。 将按照 wlm_collect_int 数据库配置参数指定的时间间隔来定期收集此信息。 未指定 COLLECT AGGREGATE ACTIVITY DATA 时的缺省值为 COLLECT AGGREGATE ACTIVITY DATA NONE。 指定 COLLECT AGGREGATE ACTIVITY DATA 时的缺省值为 COLLECT AGGREGATE ACTIVITY DATA BASE。 COLLECT AGGREGATE ACTIVITY DATA 子句仅对服务子类有效。
BASE
指定应该针对此服务类捕获基本聚集活动数据并将其发送到统计信息事件监视器 (如果一个活动事件监视器处于活动状态)。 基本聚集活动数据包括:
  • 估计活动成本高水位标记
  • 返回行数高水位标记
  • 临时表空间使用率高水位标记
    注: 只有应用了 SQLTEMPSPACE 阈值的活动才会参与此高水位标记。
  • 活动寿命直方图
  • 活动队列时间直方图
  • 活动执行时间直方图
EXTENDED
指定应该为此服务类捕获所有聚集活动数据,并将这些数据发送到统计信息事件监视器 (如果其中一个活动)。 这包括所有基本聚集活动数据以及:
  • 活动数据操作语言 (DML) 估计成本直方图
  • 活动 DML 到达间隔时间直方图
NONE
指定不应捕获此服务类的聚集活动数据。
COLLECT AGGREGATE REQUEST DATA
指定应该为此服务类捕获聚集请求数据,并将其发送到统计信息事件监视器 (如果该数据处于活动状态)。 将在 wlm_collect_int 数据库配置参数指定的时间间隔内定期收集此信息。 缺省值为 COLLECT AGGREGATE REQUEST DATA NONE。 COLLECT AGGREGATE REQUEST DATA 子句仅对服务子类有效。
BASE
指定应该为此服务类捕获基本聚集请求数据,并将这些数据发送到统计信息事件监视器 (如果一个数据处于活动状态)。
NONE
指定不应捕获此服务类的聚集请求数据。
COLLECT AGGREGATE UNIT OF WORK DATA
指定要为此服务类捕获聚集工作单元数据并将其发送到统计信息事件监视器 (如果一个工作单元处于活动状态)。 将在 wlm_collect_int 数据库配置参数指定的时间间隔内定期收集此信息。 缺省值为 COLLECT AGGREGATE UNIT OF WORK DATA NONE。 COLLECT AGGREGATE UNIT OF WORK DATA 子句仅对服务子类有效。
BASE
指定要为此服务类捕获基本聚集工作单元数据并将其发送到统计信息事件监视器 (如果有一个活动)。 基本聚集工作单元包括:
  • 工作单元生存期直方图
NONE
指定不收集此服务类的聚集工作单元数据。
COLLECT REQUEST METRICS
指定应该为与指定服务超类关联的连接提交的任何请求收集监视器度量值,并将其发送到统计信息和工作单元事件监视器 (如果处于活动状态)。 缺省值为 COLLECT REQUEST METRICS NONE。 COLLECT REQUEST METRICS 子句仅对服务超类有效 (SQLSTATE 50U44)。
注: 有效请求度量值收集设置是由与提交请求的连接相关联的服务超类上的 COLLECT REQUEST METRICS 子句指定的属性与 mon_req_metrics 数据库配置参数的组合。 如果服务超类属性或配置参数的值不是 NONE ,那么将收集请求的度量值。
NONE
指定将不会为与服务超类关联的连接提交的任何请求收集度量值。
BASE
指定将为与服务超类关联的连接提交的任何请求收集基本度量。
EXTENDED
指定应该为此服务类捕获基本聚集请求数据,并将这些数据发送到统计信息事件监视器 (如果一个数据处于活动状态)。 此外,指定以下监视元素的值应以附加粒度确定:
  • total_section_time
  • total_section_proc_time
  • total_routine_user_code_time
  • total_routine_user_code_proc_time
  • total_routine_time
histogram-template-clause
指定收集服务类中执行的活动的聚集活动数据时要使用的直方图模板。 HISTOGRAM TEMPLATE 子句仅对服务子类有效。
ACTIVITY LIFETIME HISTOGRAM TEMPLATE template-name
指定用于描述直方图的模板,该直方图用于收集有关特定时间间隔内在服务类中运行的数据库活动的持续时间 (以毫秒为单位) 的统计数据。 此时间包括排队时间和执行时间。 缺省值为 SYSDEFAULTHISTOGRAM。 仅当带 BASE 或 EXTENDED 选项指定 COLLECT AGGREGATE ACTIVITY DATA 子句时,才会收集此信息。
ACTIVITY QUEUETIME HISTOGRAM TEMPLATE template-name
指定用于描述直方图的模板,该直方图用于收集有关特定时间间隔内在服务类中运行的数据库活动排队的时间长度 (以毫秒为单位) 的统计数据。 缺省值为 SYSDEFAULTHISTOGRAM。 仅当带 BASE 或 EXTENDED 选项指定 COLLECT AGGREGATE ACTIVITY DATA 子句时,才会收集此信息。
ACTIVITY EXECUTETIME HISTOGRAM TEMPLATE template-name
指定用于描述直方图的模板,该直方图用于收集有关在特定时间间隔内服务类中运行的数据库活动正在执行的时间长度 (以毫秒计) 的统计数据。 此时间未包括排队时间。 仅在协调程序 成员 处的此直方图中收集活动执行时间。 此时间未包括空闲时间。 空闲时间是在未执行工作时执行属于同一活动的请求之间的时间。 空闲时间的示例是打开游标操作结束到从该游标访存数据操作开始的时间。 缺省值为 SYSDEFAULTHISTOGRAM。 仅当带 BASE 或 EXTENDED 选项指定 COLLECT AGGREGATE ACTIVITY DATA 子句时,才会收集此信息。 仅考虑将嵌套级别为 0 的活动包括在直方图中。
请求执行时间直方图模板 template-name
指定用于描述直方图的模板,该直方图用于收集有关在特定时间间隔内在服务类中运行的数据库请求正在执行的时间长度 (以毫秒计) 的统计数据。 此时间未包括排队时间。 在执行请求的每个 成员 上的此直方图中收集请求执行时间。 缺省值为 SYSDEFAULTHISTOGRAM。 仅当使用 BASE 选项指定了 COLLECT AGGREGATE REQUEST DATA 子句时,才会收集此信息。
ACTIVITY ESTIMATEDCOST HISTOGRAM TEMPLATE template-name
指定用于描述直方图的模板,该直方图用于收集有关服务类中运行的 DML 活动的估算成本 (以 timeron 为单位) 的统计数据。 缺省值为 SYSDEFAULTHISTOGRAM。 仅当带 EXTENDED 选项指定 COLLECT AGGREGATE ACTIVITY DATA 子句时,才会收集此信息。 仅考虑将嵌套级别为 0 的活动包括在直方图中。
ACTIVITY INTERARRIVALTIME HISTOGRAM TEMPLATE template-name
指定用于描述直方图的模板,该直方图用于收集有关从一个 DML 活动到达到下一个 DML 活动到达之间的时间长度 (以毫秒为单位) 的统计数据。 缺省值为 SYSDEFAULTHISTOGRAM。 仅当带 EXTENDED 选项指定 COLLECT AGGREGATE ACTIVITY DATA 子句时,才会收集此信息。
UOW LIFETIME HISTOGRAM TEMPLATE template-name
指定用于描述直方图的模板,该直方图用于收集有关特定时间间隔内服务类中运行的工作单元的持续时间 (以毫秒为单位) 的统计数据。 缺省值为 SYSDEFAULTHISTOGRAM。 仅当带 BASE 选项指定 COLLECT AGGREGATE UNIT OF WORK DATA 子句时才会收集此信息。
ENABLE 或 DISABLE
指定是否可以将连接和活动映射到服务类。 缺省值为 ENABLE。
ENABLE
可以将连接和活动映射到服务类。
DISABLE
无法将连接和活动映射到服务类。 将拒绝映射到已禁用服务类的新连接或活动 (SQLSTATE 5U028)。 禁用服务超类时,也会禁用其服务子类。 重新启用服务超类时,其服务子类将返回到系统目录中定义的状态。 无法禁用缺省服务类 (SQLSTATE 5U032)。

规则

  • 可以在服务超类下创建的最大服务子类数为 61 (SQLSTATE 5U027)。
  • 可以为数据库创建的服务超类的最大数目为 64 (SQLSTATE 5U027)。
  • 工作负载管理 (WLM) 互斥 SQL 语句必须后跟 COMMIT 或 ROLLBACK 语句 (SQLSTATE 5U027)。 WLM 独占 SQL 语句包括:
    • CREATE HISTOGRAM TEMPLATE、ALTER HISTOGRAM TEMPLATE 或 DROP (HISTOGRAM TEMPLATE)
    • CREATE SERVICE CLASS、ALTER SERVICE CLASS 或 DROP (SERVICE CLASS)
    • CREATE THRESHOLD、ALTER THRESHOLD 或 DROP (THRESHOLD)
    • CREATE WORK ACTION SET、ALTER WORK ACTION SET 或 DROP (WORK ACTION SET)
    • CREATE WORK CLASS SET、ALTER WORK CLASS SET 或 DROP (WORK CLASS SET)
    • CREATE WORKLOAD、ALTER WORKLOAD 或 DROP (WORKLOAD)
    • GRANT(工作负载权限)或 REVOKE(工作负载权限)
  • 不能在全局事务(例如 XA 事务)中发出 WLM 独占 SQL 语句 (SQLSTATE 51041)。

注意

  • 将为每个服务超类自动创建缺省子类 SYSDEFAULTSUBCLASS。
  • 在所有 成员中,一次只允许一个未落实的 WLM 互斥 SQL 语句。 如果未落实的 WLM 独占 SQL 语句正在执行,那么后续 WLM 独占 SQL 语句将等到当前 WLM 独占 SQL 语句落实或回滚为止。
  • 更改将写入到系统目录中,但在 COMMIT 语句之后才会生效,即使对于发出该语句的连接也是如此。
  • 语法替代方法: 支持以下内容以与先前版本的 Db2® 和其他数据库产品兼容。 这些备用项是非标准的,不应使用。
    • 可以指定 DATABASE PARTITION 来代替 MEMBER,除非 DB2_ENFORCE_MEMBER_SYNTAX 注册表变量设置为 ON。
    • 可以指定 DATABASE PARTITIONS 来代替 MEMBERS,除非 DB2_ENFORCE_MEMBER_SYNTAX 注册表变量设置为 ON。

示例

  • 示例 1: 创建名为 PETSALES 的服务超类。 将自动创建 PETSALES 的缺省子类。
       CREATE SERVICE CLASS PETSALES
  • 示例 2: 在服务超类 PETSALES 下创建名为 DOGSALES 的服务子类。 将服务类 DOGSALES 设置为已禁用。
       CREATE SERVICE CLASS DOGSALES UNDER PETSALES DISABLE
  • 示例 3: 创建具有预取程序优先级 LOW 的名为 BARNSALES 的服务超类。 将自动创建 BARNSALES 的缺省子类。 BARNSALES 服务类中的代理程序提交的预取请求将转至低优先级预取队列。
       CREATE SERVICE CLASS BARNSALES PREFETCH PRIORITY LOW