並列処理の方式
このトピックの図で、 並列方式と順次プリフェッチ、および相互の比較方法を示します。
照会が P1、P2、および P3 という 3 つのパーティションを持つ表スペースにアクセスすることを想定します。 P1、P2、および P3 という表記は、表スペースのパーティションを表しています。 R1、R2、R3... は、順次プリフェッチに対する要求です。 例えば P2R1 という組み合わせは、パーティション 2 から出された最初の要求を意味しています。
順次処理
次の図は、順次処理を示します。 順次処理では、Db2は、3つのパーティションを順番に実行し、パーティション2の処理を開始する前に、パーティション1を完了し、3を開始する前に2を完了します。 順次プリフェッチによって、入出力操作によるCP処理のオーバーラップが可能になりますが、入出力操作は互いにオーバーラップしません。 次の図の例では、プリフェッチ要求を処理するより、 プリフェッチ要求を出す方が長く時間がかかってしまいます。 プロセッサーは、入出力が終わるまで頻繁に待機します。
並列CP処理
次の図は、並列 CP 処理を示しています。 並列CP処理を使用すると、Db2は、複数の並列タスクを使用して照会を処理できます。 3つの作業を並行して実行すると、データ集中型およびプロセッサー集中型の照会の全体的な経過時間を大幅に削減できます。
並列操作の利点を最大限に活用できる照会
- Db2は、ページのフェッチのほとんどの時間を費やします。入出力集中型の照会です。
通常の入出力集中型の照会は、多くのページで表スペース・スキャンが使用される とすれば、以下のような照会です。
SELECT COUNT(*) FROM ACCOUNTS WHERE BALANCE > 0 AND DAYS_OVERDUE > 30; - Db2は、特定のタイプの照会の行を処理するためにプロセッサー時間と入出力時間を費やします。 以下の照会が含まれます。
- 集中的なデータ・スキャンと高い選択度を備えた照会
- これらの照会では、大量のデータをスキャンしますが、 検索基準を満たす行は相対的にあまり多くありません。
- 集約関数を含む照会
- 一般に列関数 (MIN、MAX、SUM、AVG、および COUNT など) は大量のデータをスキャンしますが、戻す総計結果は 1 つのみです。
- 長いデータ行にアクセスする照会
- これらの照会では、長データ行を含む表にアクセスするため、1 ページあたりの行数比は非常に少なくなります (例: 1 ページあたり 1 行)。
- 中央処理装置で大量の時間を必要とする照会。
- これらの照会は、複雑であるか、データ集約型の照会であるか、ソートを伴う読み取り専用照会である可能性があります。
例えば、典型的なプロセッサー集中型の照会は、以下のとおりです。
SELECT MAX(QTY_ON_HAND) AS MAX_ON_HAND, AVG(PRICE) AS AVG_PRICE, AVG(DISCOUNTED_PRICE) AS DISC_PRICE, SUM(TAX) AS SUM_TAX, SUM(QTY_SOLD) AS SUM_QTY_SOLD, SUM(QTY_ON_HAND - QTY_BROKEN) AS QTY_GOOD, AVG(DISCOUNT) AS AVG_DISCOUNT, ORDERSTATUS, COUNT(*) AS COUNT_ORDERS FROM ORDER_TABLE WHERE SHIPPER = 'OVERNIGHT' AND SHIP_DATE < DATE('2006-01-01') GROUP BY ORDERSTATUS ORDER BY ORDERSTATUS;
用語
任務という用語が並列処理に関する情報と共に使用される場合は、コンテキストを考慮してください。並列クエリCP処理では、タスクはクエリ処理に使用される実際の実行ユニット( z/OS® )である。
並列グループという用語は、一連のある特定の並列操作を 指します。 1 つの照会には複数の並列グループを持つことができますが、その照会内のそれぞれの 並列グループはそれ自体の固有な ID 番号によって識別されます。
並列処理の度合いは、並列グループでの操作に使用できる並列タスクの数です。Db2 Db2が生成できる、並列操作の最大数は254です。 しかし、ほとんどのクエリと Db2 環境では、 Db2 はより低い数値を選択します。
プロセッサー、実ストレージ、入出力リソースを消費する 並列操作が多いために、この最大並列操作数をさらに制限することが必要になる場合があります。 並列処理環境でリソースの消費量が高い場合は、PARAMDEG サブシステム・パラメーターの値を使用して、並列操作の最大数を制限します。
並列グループでは、親タスク とはすべて の 並列タスク の作業を調整する TCB (分散要求の SRB) の ことです。 並列タスクは、プリエンプタブル SRB と呼ばれる 特別な SRB から構成される実行可能単位です。
プリエンプト可能なSRBでは z/OS ディスパッチャはいつでもタスクを中断して、同じかそれ以上のディスパッチ優先度を持つ他の作業を実行することができる。 非分散並列作業の場合、各並列タスクは クライアント SRB と 呼ばれるプリエンプタブル SRB のタイプのもとで実行します。このクライアント SRB を使用すると、並列タスクが 元のアドレス・スペースの重要度を継承できるようにします。 分散要求の場合、並列タスクは エンクレーブ SRB と呼ばれる プリエンプタブル SRB のもとで実行します。