MPP データベースの表のハッシュ分散キーの選択
効果的なハッシュ分散キーを選択するためには、表の定義と、表に対して発行される照会について調査する必要があります。
始める前に
効果的なハッシュ分散キーを選択するには、表に関する情報と表の使用され方に関する情報を集める必要があります。
- 表定義 - 主キー、ユニーク・キー、生成列、列のデータ・タイプ
- 表データ - 固有値の数、値の分散
- 表に対して発行される照会 - 結合、等価述部
このタスクについて
MPP データベースでは、クラスター内のすべてのノードのシステム・リソース (メモリー、ストレージ、プロセッサーなどのリソース) が、データ・スライス という論理的な単位に分割されます。 ハッシュ分散を使用すると、データベース・マネージャーは、分散キーの列値にハッシュ・アルゴリズムを適用して、表の行データをデータ・スライスの間に分散させます。
効果的なハッシュ分散キーを使用すると、以下の 2 つの異なる方法で、照会のパフォーマンスを向上させることができます。
-
すべてのデータ・スライスの間で表データを均等に分散させる
均等に分散させると、以下の利点があります。- 照会処理を最大限に並列化できる
- 使用可能なストレージ・スペースを効率的に使用できる
-
別々の表から一緒に取り出されることが多い行をコロケートする (同じ場所に置く)
一緒に取り出されることが多い行を同じデータ・スライス上に配置すると、それらの行の取り出しに要する時間が短縮されます。
一般には、行のコロケートよりも均等分散を優先してください。
小さい表では、分散キーが照会のパフォーマンスに与える影響は小さくなります。 大きい表では、分散キーが照会のパフォーマンスに与える影響は大きくなります。
手順
表のすべての列を分散キーの候補と見なしたうえで、次の 4 つの基準に従って列を除外または列を選択していきます。
例
CREATE TABLE EMPLOYEE
(
ID INT NOT NULL,
NAME VARCHAR(250) NOT NULL,
RESUME CLOB,
HIRE_DATE DATE,
IS_MANAGER CHAR(1),
OFFICE_NUMBER INT
)
ORGANIZE BY ROW
追加情報:
- IS_MANAGER 列の値は、「Y」または「N」のみです。
- マネージャーは、この表と SALES という別の表に対して定期的に照会を発行して、従業員別の合計売上高のレポートを生成する必要があります。
... WHERE SALES.SALES_PERSON_ID = EMPLOYEE.ID ... - この会社はまだ設立 1 年であり、従業員の 50% は昨年の 7 月に雇用されています。
以下のロジックを使用して、EMPLOYEE 表のハッシュ分散キーを選択します。
| 基準 | 説明 | 列 |
|---|---|---|
| 表定義 |
|
残った候補:
|
| 表データ |
|
残った候補:
|
| 照会 |
|
推奨:
残った候補:
|
| 一般 |
|
分散キー: (ID) |