3.3.9 表のマトリクス分割
表の二つの列を分割キーとして,分割方法の指定を組み合わせて分割することをマトリクス分割といいます。一つ目の分割キーとなる列を第1次元分割列,二つ目の分割キーとなる列を第2次元分割列といいます。マトリクス分割は,第1次元分割列で境界値指定のキーレンジ分割をし,分割されたデータをさらに第2次元分割列で分割します。第2次元分割列に指定できる分割方法を次に示します。
-
境界値指定のキーレンジ分割
-
フレキシブルハッシュ分割
-
FIXハッシュ分割
マトリクス分割によって分割された表をマトリクス分割表といいます。マトリクス分割表に対応させて,インデクスもマトリクス分割できます。なお,表をマトリクス分割するためには,HiRDB Advanced High Availabilityが必要です。
- 〈この項の構成〉
(1) 表のマトリクス分割の効果
複数の列を分割キーとして分割することで得られる効果を次に示します。
-
SQL処理の高速化
SQLの処理を並列に実行したり,複数のキーによる検索で検索範囲を絞り込んで高速に処理したりできます。
-
運用時間の短縮
より細かな分割ができるため,1RDエリアの大きさを小さくして,再編成,バックアップの取得,障害発生時の回復作業などに必要な時間を短縮できます。
(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次元分割列名(一つ目の分割キーとなる列名)と,その境界値リストを指定します。
-
第2次元分割列名(二つ目の分割キーとなる列名)と,その境界値リストを指定します。
-
マトリクス分割の例を次の図に示します。
(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. )IN ((USR01,USR02,USR03), (USR04,USR05,USR06), (USR07,USR08,USR09))
- 〔説明〕
-
-
第1次元分割列名(一つ目の分割キーとなる列名)と,その境界値リストを指定します。
-
第2次元列分割名(二つ目の分割キーとなる列名)と,ハッシュ関数名を指定します。
-
マトリクス分割の例を次の図に示します。