|
|||||||||||||||||||||||||||||||||||||||||||
DB2 for iSeriesの索引並列処理Kent MilliganDB2 UDBテクノロジー・スペシャリスト IBMロチェスター研究所 2003年1月 |
|||||||||||||||||||||||||||||||||||||||||||
データベース・エンジンにおける並列処理というと、ほとんどの人が、1つの照会を複数のプロセッサーで処理して照会応答時間を短縮させるということをまず頭に浮かべます。ここで見落としていることは、並列処理により索引処理も高速になり、データベース・サーバー全体のパフォーマンスが向上するということです。IBM® DB2® Universal DatabaseTM (UDB) for iSeriesTMでは、索引処理にCPUを使用することができます。つまり、DB2 UDB for iSeriesは、索引の作成時と基のデータが変更したときの索引の保守時に複数のプロセッサーを使用できるということです。索引の作成および保守を並列処理で行えるという機能は、従来のバイナリー基数構造にもEVI (Encoded Vector Index) 構造にも適用されます。 DB2 UDB for iSeriesの並列処理は、DB2対称型マルチプロセッシング (DB2 SMP) ライセンス・フィーチャーが購入され、インストールされ、アクティブになっているiSeriesサーバー上でのみ利用できます
(「並列処理を使用可能にする」で後述)。
図1でわかるように、追加のCPUリソースを使用すると、索引作成時間をかなり短縮できます。この機能は、大規模データベース環境や、索引をできるだけ速く再作成する必要のあるリカバリー・シナリオで極めて重要になります。 図1.並列処理が使用できると大きく改善される索引作成時間
データベース行の変更が複数の索引に影響する場合、これらの索引の保守はデフォルトでは一度に1つずつ順番に発生します。まず、注文番号の変更は索引Aに波及し、索引Aへの変更が完了した後に注文番号が索引Bに波及する、というようになります。 索引の並列保守には、複数の索引を同時に保守することが含まれます。顧客の注文番号の変更を、索引Aと索引Bに同時に波及させることができます。この索引の同時保守処理により、注文番号の変更をデータベース全体に波及させるためにかかる全体的な時間が短縮されます。索引の並列保守では、リソースを犠牲にして時間を短縮するので、特定のアプリケーションやトランザクションのI/O速度が上がります。 図2は、索引の並列保守処理により達成される時間短縮を示します。図2では、複数の索引を持つ表に新しい行がロードされる場合、索引の並列保守によりロード時間が2〜3倍短縮されることを示します。 図2.索引保守の並列処理に伴い改善されるロード時間 DB2 UDB for iSeriesが索引の並列保守処理を使用するのは、次の場合だけです。
ブロック挿入は、バッチ更新プロセスやデータ・ウェアハウスのロード・プロセスでよく使用されるため、索引の並列処理によるパフォーマンスへの影響は、このような環境で最大になります。 ヒント:ロード・プロセスで表に追加する新規行が表全体の20%を超える場合は、ロードの前に索引を削除してからロード・プロセスを実行し、ロード・プロセスが完了した後で並列処理を使用して索引を再作成することをお勧めします。
システム・レベル
ジョブ・レベルまたは接続レベル CHGQRYA CLコマンドのDEGREEパラメーターは、システム値と同じ値を受け入れます。次のCHGQRYAコマンドをジョブに対して実行すると、システム値に関係なく、そのジョブに対してだけ並列性程度が*MAXに設定されます。
このコマンドを1つのジョブ内で複数回発行して、並列性をオンにしたりオフにすることができます。 個別のジョブまたは接続に並列処理を指定するには、QAQQINIファイルを使用することもできます。PCのツールやアプリケーションの動作 (色やウィンドウのサイズなど) を制御する構成設定を格納するために使用するPC上の.INIファイルと同じように、QAQQINIファイルを使用してデータベース・エンジンの動作 (この場合は並列処理の動作) に影響を与えることができます。このようなQAQQINI構成設定は、保存しておいて、複数のデータベース要求にまたがって動的に適用することができます。 QAQQINIファイルは通常のデータベース表ですが、これは、環境での必要に応じて様々な属性値を動的に変更できるということを意味します。また、QAQQINI属性の値の変更には通常のデータベース・インターフェースを使用できるため、柔軟性も非常に高くなります。次のSQLステートメントは、QAQQINIファイルを使用して並列性程度を*OPTIMIZEに設定する方法を示します。
1つのジョブまたは接続中に属性値を変更できる回数に上限はありません。QAQQINIファイルの作成および使用方法の詳細は、『DB2
UDB for iSeries Database Performance and Query Optimization Guide(DB2
UDB for iSeriesデータベース・パフォーマンスおよび照会オプティマイゼーションの手引き)』またはWebサイトのhttp://www.iseries.ibm.com/developer/bi/tuner/index.htmlを参照してください。
|
|||||||||||||||||||||||||||||||||||||||||||