並列処理

データベース照会などの作業のコンポーネントは、 並列に実行することにより、パフォーマンスを大幅に強化できます。 タスクの性質、データベース構成、およびハードウェア環境はすべて、 Db2® データベース製品がタスクを並行して実行する方法を決定します。

これらの要因は互いに関連しています。 データベースを物理的および論理的に設計する際には、これらすべてを考慮してください。 Db2 データベース・システムでは、 以下のタイプの並列処理がサポートされています。
  • I/O
  • 照会
  • ユーティリティー

入出力の並列処理

1 つの表スペースに複数のコンテナーがある場合、データベース・マネージャーは並列入出力 を使用できます。 並列入出力とは、複数の入出力装置との間で書き込み/読み取り処理を同時に行うことです。その結果、スループットが大幅に改善される可能性があります。

照会並列処理

照会並列処理のタイプには、 照会間並列処理と照会内並列処理の 2 つがあります。

照会間並列処理 とは、 同時に複数のアプリケーションからの照会を受け付けるという、データベースの機能です。 各照会はそれぞれ他の照会と独立して実行されますが、 データベース・マネージャーはそれらのすべてを同時に実行します。 Db2 データベース製品は、このタイプの並列処理を常にサポートします。

照会内並列処理 とは、パーティション内並列処理またはパーティション間並列処理 (あるいはその両方) を使って 1 つの照会の各部分を同時に処理することです。

パーティション内並列処理

パーティション内並列処理 とは、 1 つの照会を複数の部分に分割する機能のことです。 一部の Db2 ユーティリティーも、このタイプの並列処理を実行します。

パーティション内並列処理では、(索引の作成、データベースのロード、SQL 照会など) 通常は 1 つのデータベース操作と考えられている操作を複数の部分に分割して、それらのほとんど (またはすべて) を 1 つのデータベース・パーティション内で並列して実行することができます。

図 1 は、並列で実行できる 3 つの部分に分割された照会を示しています。結果は、照会が順次実行された場合よりも迅速に返されます。 これらのピースは、お互いのコピーです。 パーティション内並列処理を使用するには、データベースを適切に構成する必要があります。 並列処理の度合いは自分で選択するか、またはシステムに選択させるようにすることができます。 並列処理の度合いは、並列に実行する照会のピースの数を表しています。

図1: パーティション内並列処理
照会の各部分は独立して実行され、結果は返される前にマージされます。

パーティション間並列処理

パーティション間並列処理 とは、1 つのマシンまたは複数のマシン上で、 パーティション・データベースの複数のパーティションに渡って 1 つの照会を複数の部分に分割する機能のことです。 照会は並列に実行されます。 一部の Db2 ユーティリティーも、このタイプの並列処理を実行します。

パーティション間並列処理では、(索引の作成、データベースのロード、SQL 照会など) 通常は 1 つのデータベース操作と考えられている操作を複数の部分に分割して、1 つまたは複数のマシン上で、それらのほとんど (またはすべて) をパーティション・データベースの複数パーティションの間で並列して実行することができます。

図 2 は、並列で実行できる 3 つの部分に分割された照会を示しています。照会が単一のデータベース・パーティションで順次実行された場合よりも迅速に結果が返されます。

並列処理の度合いは、 作成したデータベース・パーティションの数とデータベース・パーティション・グループを定義した方法によって大部分が決まります。

図2: パーティション間並列処理
照会は、複数のデータベース・パーティションに分割されます。 各データベース・パーティションは、その部分からのデータのみを戻します。

パーティション内並列処理とパーティション間並列処理の同時使用

パーティション内並列処理とパーティション間並列処理を同時に使用することができます。 この組み合わせにより 2 段階で並列処理が 行われるため、この結果、照会の処理スピードが劇的に速くなります。

図3: パーティション間並列処理とパーティション内並列処理の同時使用
照会はパーティション内並列処理を使用して分割され、各部分はパーティション間並列処理によって再び分割されます。

ユーティリティー並列処理

Db2 のユーティリティーは、パーティション内並列処理を利用できます。 また、パーティション間並列処理も利用できます。複数のデータベース・パーティションが存在する場合、ユーティリティーはそれぞれのデータベース・パーティションで並列的に実行されます。

ロード・ユーティリティーは、パーティション内並列処理と入出力並列処理を利用することができます。 データのロードは、CPU 集中型のタスクです。 ロード・ユーティリティーは、データの解析および形式設定などのタスクに、複数のプロセッサーを利用します。 また、ロード・ユーティリティーは、並列入出力サーバーを使用して、 コンテナーにデータを並列に書き込むことができます。

パーティション・データベース環境では、LOAD コマンドを、表が存在する各データベース・パーティションで並列的に呼び出すことによって、パーティション内、パーティション間、および入出力の各並列処理を利用することができます。

索引の作成時には、データのスキャンとその後のソートが並列して実行されます。 Db2 システム では、索引を作成するときに、 入出力並列処理とパーティション内並列処理の両方を利用しています。 これは、再始動時 (索引が無効としてマーク付けされている場合) およびデータの再編成時に、 CREATE INDEX ステートメントが出されたときの索引作成のスピードアップに役立ちます。

データのバックアップとリストアは、 入出力制約の大きいタスクです。 Db2 システムでは、バックアップ操作とリストア操作を実行するときに、 入出力並列処理とパーティション内並列処理の両方を利用しています。 バックアップでは、複数の表スペース・コンテナーから並列に読み取り、 複数のバックアップ・メディアに非同期的に並列に書き込みを行うことによって、 入出力並列処理を利用しています。