3.2 スキーマ
3.3.9 表のマトリクス分割
2. データ量の偏りを修正するためにリバランスユティリティ(pdrbal コマンド)を実行します。
3. リバランスユティリティを実行すると,ハッシュグループ単位にデータが移動して再配置されます。
これを表のリバランスといいます。ハッシュ分割表のリバランス機能を使用すると,分割キーを ハッシュした結果を基にして HiRDB がデータを 1,024 のグループ(これをハッシュグループとい います)に分けます。このグループごとに RD エリアのセグメントを割り当ててデータを格納しま す。データの再配置もこのハッシュグループ単位に実行されます。
適用基準
• データの増加が見込まれていて,将来 RD エリアを追加する可能性がある場合※
• データ容量が大きいため,表を再作成するのが難しい場合 注※
データが格納されている FIX ハッシュ分割表には RD エリアを追加できませんが,ハッシュ分割表 のリバランス機能を使用すると RD エリアを追加できるようになります。
運用方法
ハッシュ分割表のリバランス機能の運用手順の概略を次に示します。
1. ハッシュ分割表を定義するときにハッシュ関数 A〜F を使用して,その表をリバランス表として定 義します。
2. 表の横分割数を増やすため,表格納 RD エリアを追加します。
3. リバランスユティリティを実行して表のリバランスを行います。
(2) 適用基準
次の場合,境界値指定のキーレンジ分割の組み合わせをお勧めします。
• 第 1 次元分割列による分割では,各境界値に該当するデータ量が膨大となる
• 表にアクセスする UAP で指定できる探索条件に指定する列が複数あり,複数の列でアクセスする RD エリアを限定したい場合,又は一つの SQL 文中で n 番目に指定した列だけでアクセスする RD エリア を限定したい場合。
次の場合,境界値指定のキーレンジ分割とハッシュ分割の組み合わせをお勧めします。
• 第 1 次元分割列による分割では,各境界値に該当するデータ量が膨大となる
• 第 1 次元分割列で分割された範囲のデータを,均等に細分化して格納したい
(3) 定義方法
定義系 SQL のCREATE TABLEのPARTITIONED BY MULTIDIMオペランドで次の指定をします。
• RD エリアへの表の割り当て
• マトリクス分割の方法(分割キー,分割方法)
(4) マトリクス分割の例
(a) 境界値指定のキーレンジ分割の組み合わせの場合
顧客表の登録日及び店番号に境界値を指定し,登録日,店番号によって,それぞれの顧客データを次のよう にユーザ用 RD エリア(USR01〜USR06)に格納するように表をマトリクス分割します。格納するのに必 要なユーザ用 RD エリア数は,(境界値数+ 1)×(境界値数+ 1)なので,この例の場合,3×2 = 6 で す。
登録日 店番号
100 以下 101 以上
2000 年以前 USR01 USR02
2001 年 USR03 USR04
2002 年以降 USR05 USR06
マトリクス分割する表を定義する SQL 文を次に示します。
CREATE FIX TABLE 顧客表
(登録日 DATE, 店番号 INT, 顧客名 NCHAR(10)) PARTITIONED BY MULTIDIM(
登録日 (('2000-12-31'),('2001-12-31')), …1.
店番号 ((100)) …2.
)IN ((USR01,USR02),(USR03,USR04),(USR05,USR06))
〔説明〕
1. 第 1 次元分割列名(一つ目の分割キーとなる列名)と,その境界値リストを指定します。
2. 第 2 次元分割列名(二つ目の分割キーとなる列名)と,その境界値リストを指定します。
マトリクス分割の例を次の図に示します。
3 データベースの論理構造
69
図 3‒15 マトリクス分割の例(境界値指定のキーレンジ分割の組み合わせ)
(b) 境界値指定のキーレンジ分割とハッシュ分割の組み合わせの場合 第 2 次元分割列で FIX ハッシュ分割する場合の例について説明します。
顧客表の登録日に境界値を指定し,店番号と地域コードをハッシュ関数で 3 分割すると,それぞれの顧客 データを次のようにユーザ用 RD エリア(USR01〜USR09)に格納するように表をマトリクス分割しま す。格納するのに必要なユーザ用 RD エリア数は,(境界値数+ 1)×(ハッシュ関数で分割するユーザ任 意の数)なので,この例の場合,3×3 = 9 です。
登録日 店番号と地域コード(ハッシュ関数で 3 分割)
2002 年以前 USR01 USR02 USR03
2003 年 USR04 USR05 USR06
2004 年以降 USR07 USR08 USR09
マトリクス分割する表を定義する SQL 文を次に示します。
CREATE FIX TABLE 顧客表
(登録日 DATE, 店番号 INT, 地域コード INT, 顧客名 NCHAR(10)) PARTITIONED BY MULTIDIM
(登録日 (('2002-12-31'),('2003-12-31')), …1.
FIX HASH HASH6 BY 店番号, 地域コード …2.
(USR04,USR05,USR06), (USR07,USR08,USR09))
〔説明〕
1. 第 1 次元分割列名(一つ目の分割キーとなる列名)と,その境界値リストを指定します。
2. 第 2 次元列分割名(二つ目の分割キーとなる列名)と,ハッシュ関数名を指定します。
マトリクス分割の例を次の図に示します。
図 3‒16 マトリクス分割の例(境界値指定のキーレンジ分割とハッシュ分割の組み合わせ)
3 データベースの論理構造
71