ワークロード管理のヒストグラム

ヒストグラムはビンのコレクションです。ビンは、データの離散的範囲を収集するためのコンテナーです。 ヒストグラムは、様々なワークロード分析およびパフォーマンスのチューニング・タスクに役立ちます。 例えば、ヒストグラムを使用して値の配分を調べたり、範囲外にある値を識別したり、または平均および標準 偏差を計算したりすることができます。

Db2® ワークロード管理ヒストグラムには 41 個のビンが固定されています。 40 番目のビンにはヒストグラムの最高の定義値が含まれますが、41 番目のビンは最高の定義値を超える値のためのものです。 それぞれのビンは特定の範囲の値を表し、ビンの範囲は対数目盛りに従います。それぞれのビンが表す範囲は、1 番目のビンから 40 番目のビンに進むにつれて徐々に大きくなります。 以下の図は、アクティビティー存続時間を棒グラフで作図したヒストグラムを示しています。
図1: アクティビティー存続時間を棒グラフで作図したヒストグラム
アクティビティー存続時間を棒グラフで作図したヒストグラム
アクティビティー存続時間ヒストグラムは、以下のデータに対応しています。 それぞれのカウントは、存続時間 (ミリ秒) がビンの下限値からビンの上限値までの範囲に含まれるアクティビティーの数を表しています。 例えば、156 個のアクティビティーは、存続時間が 68 ミリ秒から 103 ミリ秒の範囲内でした。
 Low Bin  High Bin Count
       0         1     0
       1         2     0
       2         3     0
       3         5     0
       5         8     0
       8        12     0
      12        19     0
      19        29    10
      29        44    15
      44        68    45
      68       103   156
     103       158    65
     158       241    23
     241       369     0
     369       562     0
     562       858     0
     858      1309     0
    1309      1997     0
    1997      3046     0
    3046      4647     0
    4647      7089     0
    7089     10813     0
   10813     16493     0
   16493     25157     0
   25157     38373     0
   38373     58532     0
   58532     89280     0
   89280    136181     0
  136181    207720     0
  207720    316840     0
  316840    483283     3
  483283    737162     0
  737162   1124409     0
 1124409   1715085     0
 1715085   2616055     0
 2616055   3990325     0
 3990325   6086529     0
 6086529   9283913     0
 9283913  14160950     0
14160950  21600000     0
21600000  Infinity     0

ヒストグラムを使用してワークロードの理解と特徴付けを向上させる方法の例については、 シナリオ: キャパシティー・プランニング情報が使用できない場合の Db2 ワークロード管理構成のチューニング および 例を参照してください。 Db2 ワークロード管理構成のヒストグラムからの平均および標準偏差を計算します。

マルチメンバー・データベース環境では、ヒストグラムはメンバーごとに収集されます。 ヒストグラムの各ビンの値の範囲はすべてのデータベース・メンバーで同じですが、ビンあたりのカウントはメンバーごとに固有の数になります。 ビンを使用して、メンバーごとに情報を分析することができます。 対応するビンのカウントを加算することによってすべてのデータベース・メンバーからのヒストグラムを結合し、この単一ヒストグラムを使用してデータの全体像を得ることもできます。これを、全体的な平均や標準偏差の計算などの作業に使用できます。

ヒストグラムは、サービス・クラス、ワークロード、およびワーク・クラ スに、ワーク・アクションを介して使用できます。 オブジェクトの作成または変更時に COLLECT AGGREGATE ACTIVITY DATA、COLLECT AGGREGATE REQUEST DATA、または COLLECT AGGREGATE UNIT OF WORK DATA 節の 1 つを指定すると、これらのオブジェクトのためにヒストグラムが収集されます。 ワーク・クラスの場合は、COLLECT AGGREGATE ACTIVITY DATA ワーク・アクションをワーク・クラスに適用するとヒストグラムも収集されます。 以下のヒストグラムが使用可能です。
  • ネストなしコーディネーター・アクティビティー存続時間 (サービス・クラス、ワークロード、またはワーク・クラスに適用されるワーク・アクションに対して、AGGREGATE ACTIVITY DATA BASE または AGGREGATE ACTIVITY DATA EXTENDED を指定した場合)
  • ネストなしコーディネーター・アクティビティー実行時間 (サービス・クラス、ワークロード、またはワーク・クラスに適用されるワーク・アクションに対して、AGGREGATE ACTIVITY DATA BASE または AGGREGATE ACTIVITY DATA EXTENDED を指定した場合)
  • ネストなしコーディネーター・アクティビティー・キュー時間 (サービス・クラス、ワークロード、またはワーク・クラスに適用されるワーク・アクションに対して、AGGREGATE ACTIVITY DATA BASE または AGGREGATE ACTIVITY DATA EXTENDED を指定した場合)
  • 要求実行時間 (サービス・サブクラスに対して AGGREGATE REQUEST DATA BASE を指定した場合)。このヒストグラムは、ワークロードまたはワーク・クラスには適用されません。
  • ネストなしアクティビティー到着間隔時間ヒストグラム (サービス・クラス、ワークロード、またはワーク・クラスに適用されるワーク・アクションに対して、AGGREGATE ACTIVITY DATA EXTENDED を指定した場合)
  • ネストなし DML アクティビティー見積コスト (サービス・クラス、ワークロード、またはワーク・クラスに適用されるワーク・アクションに対して、AGGREGATE ACTIVITY DATA EXTENDED を指定した場合)
  • 作業単位の存続期間 (サービス・クラスに対して、 AGGREGATE UNIT OF WORK DATA BASE を指定した場合)。

アクティビティー関連のすべてのヒストグラムに、完了したアクティビティー、取り消されたアクティビティー、拒否されたアクティビティーに関する情報が含まれます。

ヒストグラム・テンプレート

オプションでヒストグラム・テンプレートを指定することができます。このテンプレートを使用して、ビンの上限値など、特定のヒストグラムの外観を決定できます。 ヒストグラム・テンプレートは 単位なし オブジェクトです。つまり、事前定義された計測単位は割り当てられていません。 ヒストグラム・テンプレートが使用されるコンテキストに応じて、 計算単位がサービス・クラス、ワークロード、またはワーク・アクションの作成または変更時に、ヒストグラムに割り当てられます。 時間ベースのヒストグラム (例えば、ACTIVITY LIFETIME HISTOGRAM 節によって指定されるものなど) は、ミリ秒単位を使用します。 一方、コスト・ベースのヒストグラム (例えば、ACTIVITY ESTIMATED COST HISTOGRAM 節によって指定されるものなど) は、timeron 単位を使用します。

CREATE HISTOGRAM TEMPLATE ステートメントを使用してビンの最大上限値を指定することによって、ヒストグラム・テンプレートを作成することができます。 その他のビンはすべて、ビンの上限値に向かって指数関数的に増加する値として、自動的に定義されます。 例えば、ビンの上限値を 3 000 000 としてヒストグラム・テンプレートを作成するには、以下のようなステートメントを発行します。
CREATE HISTOGRAM TEMPLATE TEMPLATE1 HIGH BIN VALUE 3000000
このステートメントは、以下のビンの値を使用してヒストグラム・テンプレートを作成します。
Low Bin	High Bin
      0        1
      1        2
      2        3
      3        4
      4        6
      6        9
      9       13
     13       19
     19       28
     28       41
     41       60
     60       87
     87      127
    127      184
    184      268
    268      389
    389      565
    565      821
    821     1192
   1192     1732
   1732     2514
   2514     3651
   3651     5300
   5300     7696
   7696    11173
  11173    16222
  16222    23553
  23553    34196
  34196    49649
  49649    72084
  72084   104657
 104657   151948
 151948   220609
 220609   320297
 320297   465030
 465030   675163
 675163   980250
 980250  1423197
1423197  2066299
2066299  3000000
3000000 Infinity

サービス・サブクラス、ワークロード、またはワーク・アクションを作成または変更する時、適切な HISTOGRAM TEMPLATE キーワードを使用することにより、ヒストグラム・テンプレートを適用することができます。 ヒストグラム・テンプレートを指定しない場合、デフォルトのテンプレート SYSDEFAULTHISTOGRAM が使用されます。 AGGREGATE ACTIVITY DATA コレクションをオブジェクトが使用できるようにしていない場合、ヒストグラム・テンプレートは無視されます。

例えば、サービス・スーパークラス MYSUPERCLASS 下のサービス・サブクラス MYSUBCLASS の既存のアクティビティー存続時間ヒストグラムに TEMPLATE1 ヒストグラム・テンプレートを使用するには、次のステートメントを発行します。
ALTER SERVICE CLASS MYSUBCLASS UNDER MYSUPERCLASS
ACTIVITY LIFETIME HISTOGRAM TEMPLATE TEMPLATE1

ALTER SERVICE CLASS ステートメントをコミットした後、MYSUBCLASS サービス・サブクラスに関して収集されるアクティビティー存続時間ヒストグラムのビンの上限値は、SYSDEFAULTHISTOGRAM ヒストグラム・テンプレートではなく TEMPLATE1 ヒストグラム・テンプレートによって決定されます。

別のヒストグラム・テンプレートを使用するようサービス・クラスまたはワークロードを変更する場合、あるいはヒストグラム・テンプレートを変更する場合、その変更は統計をリセットするまで有効になりません。

DROP HISTOGRAM TEMPLATE ステートメントを使用してヒストグラム・テンプレートをドロップすることができます。

SYSCAT.HISTOGRAMTEMPLATES ビューを照会することによって、ヒストグラム・テンプレートを表示できます。また、SYSCAT.HISTOGRAMTEMPLATEBINS ビューを照会することによって、対応するヒストグラム・テンプレートのビンの上限値を表示できます。 最初のビンの下限値は常に 0 です。他のビンでは、直前のビンの上限値が下限値になります。

次の例は、表関数を作成して、サブクラス全体にわたって合計することによってサービス・スーパークラス全体としての CoordActLifetime、CoordActExecTime、CoordActQueueTime、または CoordActEstCost ヒストグラムを計算します。 サブクラス全体にわたる合計は、実行中のアクティビティーが同一サービス・スーパークラス下の異なるサービス・サブクラスに再マップされる場合に役立ちます。 再マップは、サービス・クラス層と特殊なしきい値を使用してアクティビティーのリソースを動的に制御する優先度変更のシナリオで実行されることがあります。 この例は CoordActInterArrivalTime ヒストグラムには適用されません。サブクラスの CoordActInterArrivalTime ヒストグラムはそのサブクラスへの照会の到着から次の照会までの時間を計測するが、スーパークラスの CoordActInterArrivalTime ヒストグラムは自分のいずれかのサブクラスへの照会の到着から次の照会までの時間を計測するということが、加重平均の計算で考慮されないためです。

CONNECT TO SAMPLE

DROP FUNCTION histsuper

CREATE FUNCTION histsuper(superclass varchar(128),
                          histogram_type varchar(24))
RETURNS TABLE (statistics_timestamp timestamp,
               bin_top integer,
               number_in_bin integer,
               graph varchar(60))
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
RETURN WITH HISTOGRAMS AS
       (SELECT HISTOGRAM_TYPE,
              substr(PARENTSERVICECLASSNAME,1,26) as SUPERCLASS,
              STATISTICS_TIMESTAMP,
              TOP as BIN_TOP,
              sum(NUMBER_IN_BIN) as NUMBER_IN_BIN
       FROM HISTOGRAMBIN_DB2STATISTICS H,
            SYSCAT.SERVICECLASSES S
       WHERE H.SERVICE_CLASS_ID = S.SERVICECLASSID
         AND PARENTSERVICECLASSNAME = histsuper.superclass
         AND HISTOGRAM_TYPE = histsuper.histogram_type
         AND HISTOGRAM_TYPE IN ('CoordActLifetime', 'CoordActExecTime',
	    'CoordActQueueTime', 'CoordActEstCost')
       GROUP BY HISTOGRAM_TYPE, PARENTSERVICECLASSNAME, STATISTICS_TIMESTAMP, TOP)
       SELECT STATISTICS_TIMESTAMP,
              BIN_TOP,
              NUMBER_IN_BIN,
              substr(repeat('#', cast(NUMBER_IN_BIN * 60 /
                (SELECT CASE WHEN MAX(NUMBER_IN_BIN) = 0 THEN 1
		   ELSE MAX(NUMBER_IN_BIN) END FROM HISTOGRAMS) AS INTEGER)),1,60)
		   AS GRAPH FROM HISTOGRAMS

CONNECT RESET

出力は以下のようになります。

STATISTICS_TIMESTAMP       BIN_TOP     NUMBER_IN_BIN GRAPH
-------------------------- ----------- ------------- ------------------------------------------------------------
2008-11-06-14.47.08.833188 -1          0
2008-11-06-14.47.08.833188 1           1
2008-11-06-14.47.08.833188 2           1
2008-11-06-14.47.08.833188 3           2
2008-11-06-14.47.08.833188 5           4
2008-11-06-14.47.08.833188 8           7
2008-11-06-14.47.08.833188 12          15
2008-11-06-14.47.08.833188 19          29            #
2008-11-06-14.47.08.833188 29          41            #
2008-11-06-14.47.08.833188 44          67            ##
2008-11-06-14.47.08.833188 68          112           ###
2008-11-06-14.47.08.833188 103         228           #####
2008-11-06-14.47.08.833188 158         335           ########
2008-11-06-14.47.08.833188 241         723           #################
2008-11-06-14.47.08.833188 369         1289          ###############################
2008-11-06-14.47.08.833188 562         1890          #############################################
2008-11-06-14.47.08.833188 858         2484          ############################################################
2008-11-06-14.47.08.833188 1309        1943          ###############################################
2008-11-06-14.47.08.833188 1997        478           ###########
2008-11-06-14.47.08.833188 3046        221           #####
2008-11-06-14.47.08.833188 4647        29            #
2008-11-06-14.47.08.833188 7089        7
2008-11-06-14.47.08.833188 10813       0
2008-11-06-14.47.08.833188 16493       2
2008-11-06-14.47.08.833188 25157       0
2008-11-06-14.47.08.833188 38373       1
2008-11-06-14.47.08.833188 58532       0
2008-11-06-14.47.08.833188 89280       0
2008-11-06-14.47.08.833188 136181      0
2008-11-06-14.47.08.833188 207720      0
2008-11-06-14.47.08.833188 316840      0
2008-11-06-14.47.08.833188 483283      0
2008-11-06-14.47.08.833188 737162      0
2008-11-06-14.47.08.833188 1124409     0
2008-11-06-14.47.08.833188 1715085     0
2008-11-06-14.47.08.833188 2616055     0
2008-11-06-14.47.08.833188 3990325     0
2008-11-06-14.47.08.833188 6086529     0
2008-11-06-14.47.08.833188 9283913     0
2008-11-06-14.47.08.833188 14160950    0
2008-11-06-14.47.08.833188 21600000    0

41 record(s) selected.