照会並列処理の解釈
プラン表データを調べて、並列処理を利用するアクセス・パスを Db2 が選択するかどうかを判別することができます。
このタスクについて
Db2が並列処理を選択する可能性を理解するには、PLAN_TABLE出力を調べてください。 この情報は、 並列処理について PLAN_TABLE 列を調べる方法を記述し、いくつかの例を提供します。
プロシージャー
並列処理の場合の EXPLAIN 出力を解釈するには、次のようにします。
例
以下の例では、並列処理を表すいくつかの PLAN_TABLE 値について説明しています。
- 単一表アクセス
- Db2がバインド時に、表T1からデータを取得するために3つの並行要求を開始すると想定します。 PLAN_TABLE の一部は、次の表に示すとおり です。 Db2がステップに対して並列操作を使用しないことを決定した場合は、ACCESS_DEGREEおよびACCESS_PGROUP_IDにNULL値が含まれています。
表 1. 単一表アクセスの PLAN_TABLE の一部 TNAME METHOD ACCESS_
DEGREEACCESS_
PGROUP_
IDJOIN_
DEGREEJOIN_
PGROUP_
IDSORTC_
PGROUP_
IDSORTN_
PGROUP_
IDT1 0 3 1 (null) (null) (null) (null) - ネスト・ループ結合
- 照会によって、3 つの表 (T1、T2 および T3) が関係した、 一連のネスト・ループ結合ができたとします。 T1 は最外部の表で、T3 は最も内部の表です。 Db2 バインド時に、3つのテーブルからデータを取得するために3つの同時リクエストを開始することを決定します。 各要求は、T1 の一部および T2 と T3 のすべてにアクセスします。 ソート付きネスト・ループ結合方法の場合、ACCESSTYPE=T (疎索引) との スター型結合の場合を除いて、検索はすべて同一の並列グループに あります。 PLAN_TABLE の一部は、次の表に示すとおり です。
表 2. ネスト・ループ結合の PLAN_TABLE の一部 TNAME METHOD ACCESS_
DEGREEACCESS_
PGROUP_
IDJOIN_
DEGREEJOIN_
PGROUP_
IDSORTC_
PGROUP_
IDSORTN_
PGROUP_
IDT1 0 3 1 (null) (null) (null) (null) T2 1 3 1 3 1 (null) (null) T3 1 3 1 3 1 (null) (null) - マージ・スキャン結合
- 照会によって、2 つの表 (T1 および T2) のマージ・スキャン結合ができたとします。 Db2 バインド時に、 に対して3つの同時リクエスト、 に対して6つの同時リクエストを開始することを決定します。 T1 T2 T1 のスキャンとソートはある 1 つの並列グループで行われ、 T2 のスキャン とソートは別の並列グループで行われます。 また、マージ・フェーズは並列に実行できる可能性が あります。 この場合、3 番目の並列グループを使用して、ソートされたそれぞれの中間表に対して 3 つの 並行要求を開始します。 PLAN_TABLE の一部は、次の表に示すとおり です。
表 3. マージ・スキャン結合の PLAN_TABLE の一部 TNAME METHOD ACCESS_
DEGREEACCESS_
PGROUP_
IDJOIN_
DEGREEJOIN_
PGROUP_
IDSORTC_
PGROUP_
IDSORTN_
PGROUP_
IDT1 0 3 d (null) (null) d (null) T2 2 6 2 3 3 d d マルチテーブルの結合では、 Db2 は並列タスクで複数のテーブルを含む複合型のソートを実行する場合もあります。 Db2 コストベースモデルを使用して、すべてのケースで並列ソートを使用するかどうかを決定します。 Db2が並列ソートの使用を決定すると、SORTC_PGROUP_IDとSORTN_PGROUP_IDは、並列グループIDを示します。 T1、T2、および T3 の 3 つの表を結合する照会を考え、T1 と T2 間の マージ・スキャン結合、次にその T1 と T2 の複合と T3 間のマージ・スキャン結合を使用し ます。 Db2がコスト・モデルに基づいて、この照会内のすべてのソートを並列に実行することを決定した場合は、PLAN_TABLEの一部が以下の表に示されているように表示されます。表 4. 複数表の、マージ・スキャン結合に対する PLAN_TABLE 一部 TNAME METHOD ACCESS_
DEGREEACCESS_
PGROUP_
IDJOIN_
DEGREEJOIN_
PGROUP_
IDSORTC_
PGROUP_
IDSORTN_
PGROUP_
IDT1 0 3 1 (null) (null) (null) (null) T2 2 6 2 6 3 1 2 T3 2 6 4 6 5 3 4 - ハイブリッド結合
照会によって、2 つの表 (T1 および T2) のハイブリッド結合ができたとします。 さらに、T1 はソートする必要があり、結果として PLAN_TABLE の T2 行は SORTC_JOIN=Y になります。 Db2 バインド時に、 に対して3つの同時リクエスト、 に対して6つの同時リクエストを開始することを決定します。 T1 T2 T2 のクラスター索引を使った結合には、並列操作が使用されます。
クラスター索引上に並行要求を開始して T2 RID を取り出し可能なため、 結合フェーズは並列的に実行するステップになり ます。 T2 RID と T2 行の検索結果は、同一の並列グループに入れられ ます。 PLAN_TABLE の一部は、次の表に示すとおり です。表 5. ハイブリッド結合の PLAN_TABLE の一部 TNAME METHOD ACCESS_
DEGREEACCESS_
PGROUP_
IDJOIN_
DEGREEJOIN_
PGROUP_
IDSORTC_
PGROUP_
IDSORTN_
PGROUP_
IDT1 0 3 1 (null) (null) (null) (null) T2 4 6 2 6 2 1 (null)