14.5.5 環境設定
空き領域の再利用機能を使用するための環境設定について次に示します。
-
pd_assurance_table_noオペランドに空き領域の再利用機能を使用するユーザ表の表数を指定します。
分割表の場合は1分割を1表として計算します。HiRDB/パラレルサーバの場合,バックエンドサーバごとに計算し,その最大数をこのオペランドに登録します。
なお,CREATE TABLEで定義又はALTER TABLEで定義変更した表は,pd_assurance_table_noオペランドの指定数(予約数)まで空き領域の再利用機能を使用できます。予約数を超えた表に挿入が実行された場合,KFPH22030-Wメッセージが出力され,空き領域の再利用機能は適用されません。この場合,pd_assurance_table_noオペランドの指定値を増やすと定義したすべての表に空き領域の再利用機能が適用されます。ALTER TABLEのADD RDAREA指定で表格納RDエリアを追加して定義数が予約数を超えた場合や,HiRDB/パラレルサーバで定義数が予約数を超えた場合は,空き領域の再利用を定義した分割表でRDエリアごとに空き領域の再利用が適用されたり,されなかったりする場合があります。
-
空き領域を再利用するセグメント数を見積もり(表の総データ数から総セグメント数を見積もります。「ユーザ用RDエリアの容量の見積もり」を参照してください),見積もったセグメント数を定義系SQLのCREATE TABLEのSEGMENT REUSEオプションで指定します。作成済みの表に対してはALTER TABLEのSEGMENT REUSEオプションで指定します。ここで指定したセグメント数はすべてのRDエリアに適用されます。
また,さらに格納効率を向上させたい場合は,SEGMENT REUSEのOPTIONで再利用オプション値を指定します。再利用オプション値を指定すると,次の機能が使えるようになります。
各機能の再利用オプション値
機能
格納効率の向上が期待できるケース
1
UPDATE対応
-
固定長データ,ADT列のNULL値からのUPDATEがある
-
BINARY列のUPDATEがある
-
VARCHAR列,NVARCHAR列,MVARCHAR列(NO SPLIT指定)のUPDATEがある
-
確保済みセグメント数に比べてサーチモードの切り替え回数が少ない(pddbstコマンドで確認できます)
2
分岐行が多発する表の格納効率向上
分岐行を作成する表を運用するケース
3
UPDATE対応及び分岐行が多発する表の格納効率向上
-
固定長データ,ADT列のNULL値からのUPDATEがある
-
BINARY列のUPDATEがある
-
VARCHAR列,NVARCHAR列,MVARCHAR列(NO SPLIT指定)のUPDATEがある
-
確保済みセグメント数に比べてサーチモードの切り替え回数が少ない(pddbstコマンドで確認できます)
-
分岐行を作成する表を運用するケース
なお,OPTION 1(UPDATE対応)を適用すると,UPDATE時のページ確保を,新規ページ追加モード時は最終セグメントから,空きページ再利用モード時は前回記憶したサーチ開始位置のあるセグメントから行います。このとき,データロードや表の再編成で作成する空き領域を優先的に利用することがなくなります。そのため,OPTION 1を指定する表はCREATE TABLE文のPCTFREEに(0,0)を指定することを推奨します。
-
-
一度定義したセグメント数を変更する場合,ALTER TABLEのSEGMENT REUSEオプションで再度セグメント数を指定します。ページサーチモードとセグメント数の指定値によって,HiRDBは次のように処理します。
-
新規ページ追加モード時
指定されたセグメント数が使用中セグメント数より少ない場合,最後に確保したセグメント内に空き領域がなくなった後で空き領域の再利用を実行します。
-
空きページ再利用モード時
使用中セグメント数以下のセグメント数が指定された場合,そのまま続行します。使用中セグメント数より多いセグメント数が指定された場合,空き領域をすべて使用した後で空き領域の再利用をいったん中止し,新規に未使用セグメントを確保します。
-
-
バッチ処理などで一時的に大量追加をする場合など,空き領域の再利用機能を一時中止したい場合,ALTER TABLEでSEGMENT REUSE NOを指定します。実行するとすぐに空き領域の再利用機能は中止され,新規に未使用セグメントが確保されます。
-
空き領域の再利用機能を使用している表がセグメント確保時に出力する,RDエリアのセグメント使用率通知メッセージ(KFPH00211-I,又はKFPA12300-I)を抑止したい場合,pd_rdarea_warning_point_msgoutオペランドにNを指定します。
削除(更新),挿入を含み,かつデータ量の増加がない場合,空き領域の再利用機能を使用すると,表の再編成やRDエリアの拡張をする必要がなくなります。そのため,ユーザはRDエリアのセグメント使用率通知メッセージの出力を監視する必要もなくなります。削除(更新),挿入を含み,データ量の増加がなく,かつ次のすべての条件に該当するときは,RDエリアのセグメント使用率通知メッセージの出力を抑止できます。
-
格納RDエリアに,空き領域の再利用機能を使用している表だけを定義している。
-
FIX属性の表である,又は可変長の列を含まない表である(データ長が長くなるような更新をしない)。
ただし,次に示す場合は空き領域の再利用機能が動作しないおそれがあるため,RDエリアのセグメント使用率通知メッセージを出力し,監視を行ってください。RDエリアの使用状況に応じてユーザが対処する必要があります。
-
空き領域の再利用機能を定義している表数が,pd_assurance_table_noオペランドで指定した予約数より多い。
-
格納RDエリアに対して空き領域の再利用機能を使用している表を複数定義していて,表定義のSEGMENT REUSEのセグメント数に,最大データ量サイズ以上を指定していない。
-