13.12.8 RDエリアの分割(格納条件指定の場合)
- 〈この項の構成〉
(1) 格納条件の変更規則
格納条件の変更規則について説明します。
(a) 上限値
格納条件を変更するときは,次の表に示す上限値の規則を守ってください。
項目 |
上限値 |
上限値を超えた場合の動作 |
---|---|---|
分割の対象にできるRDエリア数 |
1 |
ALTER TABLEをエラーとします。 |
1回の操作で分割できる数 |
16 |
|
分割した結果の総分割RDエリア数(重複を含む) |
4,096 |
|
分割後の総格納条件数(格納条件を指定していないRDエリアも含む) |
15,000 |
(b) 分割時の規則
分割対象となるRDエリアは一定の条件を満たしている必要があります。RDエリアの分割可否を次の表に示します。
分割対象RDエリア※1 |
表に定義した格納条件 |
分割 可否 |
説明 |
---|---|---|---|
格納条件を指定したRDエリアの場合 |
分割対象RDエリアに格納条件を一つだけ指定している |
× |
ALTER TABLEがエラーになります。 |
分割対象RDエリアに格納条件を二つ以上指定している |
○ |
格納条件を指定したRDエリアを分割する例を図「格納条件を指定したRDエリアを分割する例」に示します。 |
|
格納条件を指定していないRDエリアの場合 |
− |
○ |
格納条件を指定していないRDエリアを分割する例を図「格納条件を指定していないRDエリアを分割する例」に示します。 |
OTHERS指定※2のRDエリアの場合 |
格納条件が全RDエリアに指定されている |
○ |
OTHERS指定のRDエリアを分割する例を図「OTHERS指定のRDエリアを分割する例」に示します。 |
格納条件なしのRDエリアがある |
× |
ALTER TABLEがエラーになります。 OTHERS指定のRDエリアを分割できない例を図「OTHERS指定のRDエリアを分割できない例」に示します。 |
- (凡例)
-
○:分割できます。
×:分割できません。
−:該当しません。
- 注※1
-
ALTER TABLEのCHANGE RDAREAの変更前RDエリア情報リストに指定されたRDエリアが分割対象RDエリアになります。
- 注※2
-
OTHERS指定のRDエリアについては,「OTHERS指定のRDエリア」を参照してください。
図13‒35 格納条件を指定したRDエリアを分割する例 図13‒36 格納条件を指定していないRDエリアを分割する例 図13‒37 OTHERS指定のRDエリアを分割する例 図13‒38 OTHERS指定のRDエリアを分割できない例
(2) OTHERS指定のRDエリア
格納条件指定の分割時,実体のないダミーのRDエリアを分割できます。また,分割後に実体のあるRDエリアとダミーのRDエリアに分割することもできます。この実体のないダミーのRDエリアをOTHERS指定のRDエリアといいます。OTHERS指定のRDエリアは,格納条件なしのRDエリアと仮定されて分割又は統合処理が行われます。OTHERS指定のRDエリアの利用方法を次に示します。
-
新たな格納条件を指定したRDエリアや,格納条件なしのRDエリアを追加したりできる
OTHERS指定のRDエリアを格納条件なしのRDエリアと仮定し,分割を行います。これによって,新たな格納条件を指定したRDエリアや,格納条件なしのRDエリアを追加できます。具体例については,図「OTHERS指定のRDエリアを分割する例」を参照してください。
-
格納条件なしのRDエリアを削除したり,新たな格納条件を追加したりできる
格納条件なしのRDエリア又はOTHERS指定のRDエリアを分割した場合,分割後のRDエリアの一つにOTHERS指定のRDエリアを指定できます。OTHERS指定のRDエリアは格納条件なしのRDエリアと仮定されるため,格納条件ありのRDエリアと一緒に指定すると,格納条件なしのRDエリアを削除したり,新たな格納条件を追加したりできます。具体例については,「分割後のRDエリアの決定方法」を参照してください。
(3) 分割後のRDエリアの決定方法
ALTER TABLEのCHANGE RDAREAに指定した分割後の格納条件とRDエリアに従ってデータを格納するRDエリアが決まります。分割後のRDエリアは,分割対象RDエリアでもよいし,新たに用意したRDエリアでもかまいません。ただし,分割後のRDエリア名に重複した名称を指定できません。
分割対象RDエリアと分割後RDエリアの組み合わせ可否について以下に説明します。
(a) 複数の格納条件を指定したRDエリアを分割対象とする場合
分割対象RDエリア(複数の格納条件を指定したRDエリア)と分割後RDエリアの組み合わせ可否を次の表に示します。
ALTER TABLEのCHANGE RDAREAに 指定する分割後RDエリアの条件 |
分割後RDエリアとしての指定可否 |
||
---|---|---|---|
格納条件なしのRDエリアがある場合 |
全RDエリアに格納条件が指定されている場合 |
||
分割対象RDエリアを指定しない場合 |
新規のRDエリアだけを指定している |
○(図「分割できるケース(その1)」を参照) |
|
格納条件指定ありのRDエリアを含んでいる |
×(図「分割できないケース(その1)」を参照) |
||
格納条件指定なしのRDエリアを含んでいる |
×(図「分割できないケース(その1)」を参照) |
− |
|
OTHERS指定のRDエリアを指定 |
×(図「分割できないケース(その2)」を参照) |
||
分割対象RDエリアを指定する場合 |
分割対象RDエリア以外は新規のRDエリアである |
○(図「分割できるケース(その2)」を参照) |
|
格納条件指定ありのRDエリアを含んでいる |
×(図「分割できないケース(その1)」を参照) |
||
格納条件指定なしのRDエリアを含んでいる |
×(図「分割できないケース(その1)」を参照) |
− |
|
OTHERS指定のRDエリアを指定 |
×(図「分割できないケース(その2)」を参照) |
- (凡例)
-
○:分割できます。
×:分割できません。
−:該当しません。
図13‒39 分割できるケース(その1) 図13‒40 分割できるケース(その2) 図13‒41 分割できないケース(その1) 図13‒42 分割できないケース(その2)
(b) 格納条件なしのRDエリアを分割対象とする場合
分割対象RDエリア(格納条件なしのRDエリア)と分割後RDエリアの組み合わせ可否を次の表に示します。
ALTER TABLEのCHANGE RDAREAに 指定する分割後RDエリアの条件 |
分割後RDエリアとしての指定可否 |
|||
---|---|---|---|---|
格納条件なしのRDエリアがある場合 |
全RDエリアに格納条件が指定されている場合 |
|||
分割対象RDエリアを指定しない場合 |
新規のRDエリアだけを指定している |
OTHERS指定のRDエリアを含まない |
○(図「分割できるケース(その3)」を参照) |
− |
OTHERS指定のRDエリアを含む |
○(図「分割できるケース(その4)」を参照) |
− |
||
格納条件指定ありのRDエリアを含んでいる |
×(図「分割できないケース(その3)」を参照) |
− |
||
分割対象RDエリアを指定する場合 |
分割対象RDエリア以外は新規のRDエリアである |
OTHERS指定のRDエリアを含まない |
○(図「分割できるケース(その5)」を参照) |
− |
OTHERS指定のRDエリアを含む |
○(図「分割できるケース(その6)」を参照) |
− |
||
格納条件指定ありのRDエリアを含んでいる |
×(図「分割できないケース(その3)」を参照) |
− |
- (凡例)
-
○:分割できます。
×:分割できません。
−:該当しません。
図13‒43 分割できるケース(その3) 図13‒44 分割できるケース(その4) - 注意事項
-
この例の場合,分割後に'A','B','C','D','E'以外のデータが参照できなくなります。また,分割後に'A','B','C','D','E'以外のデータを挿入できなくなります。よって,分割後のRDエリアにOTHERSを指定する場合は注意が必要です。
- 注意事項
-
この例の場合,分割後に'A','B','C','D','E'以外のデータが参照できなくなります。また,分割後に'A','B','C','D','E'以外のデータを挿入できなくなります。よって,分割後のRDエリアにOTHERSを指定する場合は注意が必要です。
(c) OTHERS指定のRDエリアを分割対象とする場合
分割対象RDエリア(OTHERS指定のRDエリアを分割対象とする場合)と分割後RDエリアの組み合わせ可否を次の表に示します。
ALTER TABLEのCHANGE RDAREAに 指定する分割後RDエリアの条件 |
分割後RDエリアとしての指定可否 |
||
---|---|---|---|
格納条件なしのRDエリアがある場合 |
全RDエリアに格納条件が指定されている場合 |
||
分割後のRDエリアにOTHERS指定のRDエリアがある場合 |
新規のRDエリアだけを指定している |
× |
○(図「分割できるケース(その7)」を参照) |
格納条件指定ありのRDエリアを含んでいる |
× |
×(図「分割できないケース(その4)」を参照) |
|
分割後のRDエリアにOTHERS指定のRDエリアがない場合 |
新規のRDエリアだけを指定している |
× |
○(図「分割できるケース(その8)」を参照) |
格納条件指定ありのRDエリアを含んでいる |
× |
×(図「分割できないケース(その4)」を参照) |
- (凡例)
-
○:分割できます。
×:分割できません。
図13‒48 分割できるケース(その7) 図13‒49 分割できるケース(その8) 図13‒50 分割できないケース(その4)
(4) 分割後の格納条件の指定方法
分割対象RDエリアに対して分割後の格納条件を指定します。このときの格納条件は次に示す条件をすべて満たす必要があります。
-
指定した分割キー値が表定義に存在する
-
一つの格納条件に指定した列名のデータ型と定数のデータ型が比較可能である
-
分割後の格納条件が重複していない
分割後の格納条件の指定可否を次の表に示します。
分割対象RDエリア |
分割後の格納条件の指定内容 |
指定可否 |
|
---|---|---|---|
格納条件を指定したRDエリアの場合 |
分割対象RDエリアに含まれている格納条件を指定する |
すべての格納条件を指定する |
○ |
一部の格納条件を指定しない |
× |
||
分割対象RDエリアに含まれない格納条件を指定する |
× |
||
格納条件を指定しない |
× |
||
格納条件を指定していないRDエリアの場合 |
表定義で指定済みの格納条件を含んでいる |
× |
|
表定義で指定済みの格納条件を含んでいない |
格納条件を指定していないRDエリアがある |
○ |
|
格納条件を指定していないRDエリアがない |
× |
||
OTHERS指定のRDエリアの場合 |
表定義で指定済みの格納条件を含んでいる |
× |
|
表定義で指定済みの格納条件を含んでいない |
○ |
- (凡例)
-
○:指定できます。
×:指定できません。
なお,分割後の格納条件には,分割後の1RDエリアに対して,一つ以上の格納条件を指定できます。
(5) 表に分割キーインデクスなどが定義されている場合
格納条件を変更する表に分割キーインデクスなどが定義されている場合,表格納用RDエリアを分割したときに,インデクス格納用RDエリアも同様に分割する必要があります。格納条件を変更するときに分割対象となるリソースを次の表に示します。
表に分割キーインデクスなどが定義されている場合の分割例を次の図に示します。
表に定義されているリソース |
分割方法 |
---|---|
インデクス |
表格納用RDエリアと1対1になるように分割してください。 |
クラスタキー |
|
プライマリキー |
|
LOB列 |
また,分割時には次に示す規則があります。
-
リソースが複数定義されている場合は,すべてのリソースが分割対象になります。
-
分割指定が正しくない場合,ALTER TABLEの実行時にエラーとなります。
-
格納条件を変更した後のインデクス格納用RDエリア名,LOB列格納用RDエリア名に重複した名称を指定できません。
(6) 分割対象RDエリア内のデータの扱い
ALTER TABLEの実行時,分割対象RDエリア内のデータは通常削除されます。また,対応する次のRDエリア内のデータも削除されます。
-
インデクス格納用RDエリア内のインデクスデータ
-
LOB列格納用RDエリア内のLOBデータ
- 参考
-
分割対象RDエリア内のデータが削除される理由を次に示します。
-
分割対象RDエリア内のデータの一部が,分割後はそのRDエリアに格納される格納条件対象外のデータとなる可能性があるため
なお,分割対象RDエリア以外のRDエリア内のデータは削除されません。
-
分割時に削除対象となるデータを次の図に示します。
(a) データが削除されないケース
次に示す条件をすべて満たす場合は,分割対象RDエリア内のデータをそのまま使用できる可能性があるため,データを削除しないようにできます。
-
分割対象RDエリアを分割後にも使用する
-
分割対象RDエリア内には,分割後の格納条件を満たすデータだけが存在する
-
分割対象となるインデクス格納用RDエリア又はLOB列格納用RDエリアに対しても1及び2の条件が満たされている
データを削除しない場合は,ALTER TABLEでWITHOUT PURGEを指定してください。なお,分割対象RDエリアを分割後にも使用する指定をしていない場合にWITHOUT PURGEを指定すると,ALTER TABLEの実行時にエラーとなります。
WITHOUT PURGEが有効なケースとWITHOUT PURGEがエラーとなるケースを次の図に示します。
- 注※
-
分割前のRD01内に='B'のデータがある場合,分割後のRD01内に格納条件対象外のデータが格納されてしまいます。このため,分割前のRD01内に='A'以外のデータがないことを確認する必要があります。
図13‒54 WITHOUT PURGEがエラーとなるケース
(b) WITHOUT PURGEを指定する場合の注意事項
WITHOUT PURGEを指定して分割した場合,HiRDBはRDエリア内の全データが分割後の格納条件と一致しているかどうかのチェックを行いません。格納条件対象外のデータがRDエリア中にあると,SQLを実行するときにHiRDBが正しく動作しません。このため,WITHOUT PURGE指定をして格納条件を変更する場合は,分割対象RDエリア内のデータを確認するようにしてください。
- ポイント
-
通常はWITHOUT PURGEを指定しないで格納条件を変更してください。格納条件の変更手順については,「表の分割格納条件を変更するときの運用」を参照してください。
(c) 分割後のRDエリアにOTHERS指定をする場合の注意事項
次に示す条件をすべて満たす場合,分割後のRDエリアはすべて格納条件を指定したRDエリアになります(分割後,格納条件なしのRDエリアがなくなります)。
-
格納条件なしのRDエリアを分割対象としている
-
分割後にOTHERS指定のRDエリアを指定している
このため,分割後の格納条件に合わないデータがあると,そのデータは格納先RDエリアがなくなります。分割後に格納先RDエリアがなくなる例を次の図に示します。
- 注※
-
格納条件が='C'以外のデータは,分割後に格納先RDエリアがなくなります。