ワーク・クラスとワーク・クラス・セット

ワーク・クラスとは、アクティビティーの属性に基づいて個々のデータベース・アクティビティーを分類する方法のことです。 ワーク・クラスは、さまざまなワーク・アクション・セットが共有できるワーク・クラス・セットにグループ分けされます。

アクティビティーに関連付けるワーク・クラスを決めるデータベース・アクティビティー属性の例としては、アクティビティー・タイプ (DDL、DML、LOAD)、見積コスト (使用可能な場合)、見積カーディナリティー (使用可能な場合)、見積データ・タグ、およびスキーマ (使用可能な場合) があります。

ワーク・クラス

ワーク・クラスには以下の属性があります。
  • ワーク・クラス名。これはワーク・クラス・セット内で固有でなければなりません。
  • データベース・アクティビティー属性。これは以下の情報で構成されます。
    • このワーク・クラスに分類されるデータベース・アクティビティーのタイプ。 定義済みキーワード (例えば、CALL、READ、WRITE、DML、DDL、LOAD、および ALL) を使用して、データベース要求をさまざまなカテゴリーに分類することができます。 異なるタイプのデータベース・アクティビティーを、その作業タイプに基づいて、1 つのワーク・クラスに関連付けることができます。 例えば、WRITE キーワードには、UPDATE、DELETE、INSERT、MERGE と、DELETE、INSERT、または UPDATE を含む SELECT が含まれます。 詳しくは、 Work identification by type, cost, or data accessed with work classesを参照してください。
    • データベース・アクティビティーの DML または XQuery タイプを詳細に分類する範囲情報。
      • 指定する範囲のタイプ (timeron コストまたはカーディナリティーのいずれか)。 値の範囲の指定はオプションです。 例えば、ワーク・クラスの範囲を指定する場合、見積コストが 100 timeron 未満のすべての照会を、他の照会とは異なる仕方で処理するように指定できます。
      • 範囲の下限。
      • 範囲の上限。
    • 呼び出されるルーチンのスキーマ。 スキーマの指定はオプションです。 ワーク・クラスの定義時に、呼び出されるプロシージャーのスキーマに応じて CALL ステートメントをさらに詳細に分類するためにスキーマ属性を使用できます。 例えば、ワーク・クラスのスキーマに SCHEMA1 を指定し、作業タイプが CALL の場合、SCHEMA1 プロシージャーを呼び出すすべての CALL ステートメントはそのワーク・クラスに分類されます。 CALL または ALL 以外のワーク・クラス・タイプにスキーマを指定すると、エラー SQL0628N が返されます。
    • アクティビティーで変更が加えられる可能性のあるデータに与えられる識別タグ。 例えばワーク・クラスのデータ・タグ 3 を指定した場合、データ・タグ 3 を持つ表スペースまたはストレージ・グループ内のデータを処理するアクティビティーを分離して、異なる方法で扱うことができます。
  • ワーク・クラスの評価順序 (またはワーク・クラス・セット内のワーク・クラスの位置)。 詳しくは、「 ワーク・クラス・セット内のワーク・クラスの評価順序」を参照してください。
  • ワーク・クラスを一意的に識別する自動生成クラス ID。
ワーク・クラスは以下の 2 とおりの方法で作成できます。
  • 新規ワーク・クラスを含む新規ワーク・クラス・セットを作成するには、CREATE WORK CLASS SET ステートメントの WORK CLASS キーワードを使用します。
  • 新規ワーク・クラスを既存のワーク・クラス・セットに追加するには、ALTER WORK CLASS SET ステートメントの ADD キーワードを使用します。

ワーク・クラスを変更するには、ALTER WORK CLASS SET ステートメントの ALTER WORK CLASS キーワードを使用することができます。

ワーク・クラス・セットからワーク・クラスをドロップするには、ALTER WORK CLASS SET ステートメントの DROP WORK CLASS キーワードを使用し、ワーク・クラス・セットをドロップするには、DROP WORK CLASS SET ステートメントを使用することができます。

ワーク・クラスを表示するには、SYSCAT.WORKCLASSES ビューを照会します。

作業クラス・セット

1 つ以上のワーク・クラスをグループ化するには、ワーク・クラス・セットを使用します。 ワーク・クラス・セットは以下の属性で構成されます。
  • ワーク・クラス・セットの固有の記述名。
  • ワーク・クラス・セットに提供するコメント。
  • ゼロ以上のワーク・クラス (ワーク・クラスはワーク・クラス・セット内でしか存在できませんが、ワーク・クラス・セットにはワーク・クラスが含まれていなくても構いません)。
  • ワーク・クラス・セットを一意的に識別する自動生成 ID。

新規ワーク・クラス・セットを作成するには、CREATE WORK CLASS SET ステートメントを使用します。 空のワーク・クラス・セットを作成して後からワーク・クラスを追加することもできますし、1 つ以上のワーク・クラスを含むワーク・クラス・セットを作成することもできます。

既存のワーク・クラス・セットを変更するには、ALTER WORK CLASS SET ステートメントを使用して以下の方法で実行できます。
  • ワーク・クラス・セットにワーク・クラスを追加します。
  • ワーク・クラス・セット内のワーク・クラスのワーク・クラス属性を変更します。
  • ワーク・クラス・セットからワーク・クラスをドロップします。
ワーク・クラス・セット属性は変更できません。

ワーク・クラス・セットをドロップするには、DROP WORK CLASS SET ステートメントを使用します。

ワーク・クラス・セットを表示するには、SYSCAT.WORKCLASSSETS カタログ・ビューを照会します。

以下の図は、ワーク・クラス・セット内のワーク・クラスの例を示しています。
図1: ワーク・クラスおよびワーク・クラス・セットの例
ワーク・クラスおよびワーク・クラス・セットの例

システム上でワーク・クラス・セットが有効であるには、ワーク・アクション・セットを定義して、それをワーク・クラス・セットと関連付けなければなりません。 ワーク・アクション・セットを使用することで、ワーク・クラス・セットをサービス・スーパークラス、ワークロード、またはデータベースと関連付けて、どのアクションが分類内のデータベース・アクティビティーに適用されるかを示すことができます。 ワーク・クラス・セットに対してワーク・アクション・セットを作成しない場合、データ・サーバーはワーク・クラス・セットを無視します。