13.11.2 ハッシュ分割表のリバランス機能を使用するための準備
(1) リバランス表の定義
CREATE TABLEで指定するハッシュ関数にHASHA〜HASHFを指定します。HASHA〜HASHFを指定した表をリバランス表といいます。ハッシュ関数(HASHA〜HASHF)については,マニュアル「HiRDB SQLリファレンス」を参照してください。
CREATE TABLE TABLE01 (SCODE DEC(5) NOT NULL,SNAME NCHAR(15), … ) HASH HASHF BY SCODE IN (RDAREA01,RDAREA02); CREATE INDEX INDX01 … IN ((RDAREA11),(RDAREA12));
(2) リバランス表を格納するRDエリア
-
リバランス表を格納するRDエリアには,そのリバランス表だけしか格納できません。ほかの表及びインデクスを格納できません。
-
リバランス表を格納するRDエリアには,↑1024÷分割RDエリア数↑分のセグメント数が必要です。RDエリアを作成するときにはこの条件を満たすようにしてください。
-
RDエリアの容量を見積もる場合,↑1024÷分割RDエリア数↑分のセグメント数の余裕値をとってください。
-
リバランス表にデータを格納するには,未使用セグメントが必要になります。このため,空きページがあってもRDエリア満杯エラーとなることがあります。したがって,RDエリアの残容量は空きページ数ではなく,未使用セグメント数で管理してください。
(3) リバランス表にインデクスを定義する場合
-
リバランス表を格納するRDエリアには,そのリバランス表だけしか格納できません。ほかの表及びインデクスを格納できません。したがって,リバランス表に対してCREATE INDEXを指定する場合は,インデクス格納RDエリア名を省略できません。省略するとリバランス表を格納したRDエリアが仮定されて,エラーになります。必ず,リバランス表を格納するRDエリアと別のRDエリアを指定してください。
-
クラスタキーインデクスは定義できません。
(4) グローバルバッファ
表格納RDエリアごとにグローバルバッファの面数を↑1024÷分割RDエリア数↑×2以上にしてください。そうしないと,バッファリング効果が得られなくなります。