複数のデータベース・パーティションにまたがるデータベース・パーティション化
データベース・マネージャーは、パーティション・データベースの複数のデータベース・パーティションにまたがってデータを柔軟に拡散させる操作を可能にします。
ユーザーは分散キーを宣言することにより、データを分散する方法を選択できます。また、データの保管場所となるデータベース・パーティション・グループと表スペースを選択することにより、いくつの、そしてどのデータベース・パーティションに表データを分散できるかを決定できます。
さらに、分散マップ (更新可能) は、分散キー値のデータベース・パーティションへのマッピングを指定します。 これにより、大きな表では 1 つのパーティション・データベース全体にまたがってワークロードを柔軟に均等化することができる一方、小さな表の場合はアプリケーション設計者の選択しだいで、1 つまたは少数のデータベース・パーティションに保管することもできます。 各ローカル・データベース・パーティションでは、そこに保管されるデータのローカル索引を作成して、パフォーマンスよくローカル・データにアクセスできます。
パーティション・データベースで、分散キーは一連のデータベース・パーティションに表データを分散するために使用されます。 索引データも、それに対応する表とともにパーティション化され、各データベース・パーティションにローカル保管されます。
データベース・パーティションを使用してデータを保管するには、事前にパーティションをデータベース・マネージャーに対して定義しておく必要があります。 データベース・パーティションは、db2nodes.cfgと呼ばれるファイルに定義されます。
DISTRIBUTE
BY
節によって異なります。DISTRIBUTE BY HASH
が指定される場合、分散キーは、HASHキーワードの後の列リストに明示的に含まれるキーです。DISTRIBUTE BY RANDOM
が指定されると、表が定義されたすべてのデータベース・パーティションにデータを均等に分散させるために、データベース・マネージャーによって分散キーが選択されます。 データベース・マネージャーがこれを行うために使用する方法が 2 つあります。- ユニーク別ランダム: 表にユニーク・キーまたは主キーが含まれる場合、キーの列のユニーク特性を使用して、データのランダム・スプレッドを作成します。 ユニーク・キーまたは主キーの列は、分散キーとして使用されます。
- 生成別ランダム: 表にユニーク・キーも主キーも含まれない場合、データベース・マネージャーは、表に 1 つの列を挿入し、ハッシュ関数で使用する値を生成して生成値を保管します。 列は
IMPLICITLY HIDDEN
文節を使用して作成されるため、明示的に指定しない限り、照会には表示されません。 その列の値は、新規行が表に追加されると自動的に生成されます。 デフォルトでは、列名は RANDOM_DISTRIBUTION_KEYです。 名前が既存の列と重複してしまう場合、重複しない名前がデータベース・マネージャーによって生成されます。
DISTRIBUTE BY REPLICATION
を指定すると、表内のすべてのデータコピーが各データベース・パーティションにあるため、分散キーは選択されません。 このオプションは、マテリアライズ照会表にのみ指定できます。- 指定されていない場合、表の分散キーがデフォルトで作成されます。 単一パーティション・データベース・パーティション・グループの表スペースの表は、明示的に指定されている場合に限り、分散キーを持ちます。
- ハッシュ・アルゴリズム (データベース・パーティション機能) が分散キーのすべての列に適用され、その結果として分散マップの索引の値が生成されます。
- 分散マップで、その索引の値にあるデータベース・パーティション番号は、行が保管されるデータベース・パーティションを識別します。
データベース・マネージャーは、部分デクラスタリング をサポートします。これは、システム内のデータベース・パーティションのサブセット (つまりデータベース・パーティション・グループ) に表を配分できることを意味しています。 システム内のすべてのデータベース・パーティションにわたって表を配分する必要はありません。
データベース・マネージャーは、 結合や副照会でアクセスされているデータが同じデータベース・パーティション・グループ内の同じデータベース・パーティションにある場合に、それを認識する能力を備えています。 これを、表コロケーション といいます。 同一の分散キー値を使用して連結されている表の行は、同一のデータベース・パーティションに置かれます。 データベース・マネージャーは、 データが保管されているデータベース・パーティションでの結合処理や副照会処理の実行を選択できます。 これによって、大幅なパフォーマンスの改善が得られる場合もあります。
生成方法によるランダムを使うランダム分散表は、分散キーがRANDOM_DISTRIBUTION_KEY列の生成値に基づいているため、通常、表のコロケーションを利用できません。
連結する表は、以下の条件を満たしている必要があります。
- 同一のデータベース・パーティション・グループにあり、再配分されていない。 (再分散中に、データベース・パーティション・グループ内の表は異なる分散マップを使用する可能性があります。これらは連結されません。)
- 分散キーの列の数が同数である。
- 分散キーの対応する列がデータベースの パーティション互換であること。
- 単一パーティション表は、同じデータベース・パーティション・グループ内に定義されている場合のみ連結される。