ロード分離では、直近のコミット済みデータのみを検索することを保証するために、行バージョン管理を使用します。論理的に削除された行は行バージョン管理の産物として作成され、その結果、ロード分離テーブルは通常、ロード分離なしのテーブルよりも早く成長します。データベース管理者は論理的に削除された行を一定の間隔で物理的に削除する必要があり、これによりディスク領域を再利用して問合わせのパフォーマンスを向上します。
更新の際にテーブルが大きく、同時並行の読み取りが多いほど、より頻繁なクリーンアップが必要になります。ロード分離テーブルでサマリー統計を収集する際に、論理的に削除された行(DelRowCount)を物理行(PhyRowCount)のパーセントとして監視します。テーブルに論理的に削除された行が顕著なパーセントで含まれる場合はクリーンアップを実行します。実行しないと、テーブルで変更が行なわれる際に問合わせパフォーマンスの低下が見られます。
論理的に削除された行をクリーンアップするには、ALTER TABLEリクエストのRELEASE DELETED ROWSオプションを使用するか、またはストアド プロシージャを発行し、ロード分離テーブルと基になる結合インデックスとセカンダリ インデックスでカスケード状の論理的に削除された行をクリーンアップします。
テーブルのクリーンアップ方法の変更
ALTER TABLEリクエストでRELEASE DELETED ROWSオプションを使用して、ロード分離テーブルから論理的に削除された行を対話的にクリーンアップします。例えば、次のようになります。
ALTER TABLE Employee RELEASE DELETED ROWS;
構文の詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
ストアド プロシージャのクリーンアップ方法
ストアド プロシージャを使用して、複数のロード分離テーブルとそれらの基になる結合インデックスおよびセカンダリ インデックスから論理的に削除された行をクリーンアップします。ANSIモードではLDI_Clean_ANSIを、TeradataモードではLDI_Cleanを使用します。ANSIモードとTeradataモードの両方で入出力は同じです。(これらのストアド プロシージャは、通常、Vantageのインストール時に作成されますが、DIPDEMまたはDIPPOSTスクリプトを使用して後から追加することもできます。)
以下の例では、TeradataモードでLDI_Cleanを使用します。
call ldi_clean('database_name', 'table_name','Reset_flag_value');
ここで、Reset_flag_valueは‘Y’または‘N’で、現在のロードの増分値を0にリセットするかどうかを指定します。例えば、次のようになります。
call ldi_clean('finance', 'acct_payable','y');
Teradataは以下のような出力で応答します。
acct_payable altered, finance altered
- ロード分離テーブルでクリーンアップを実行する際は、排他的ロックが必要になります。
- クリーンアップを実行するには、DROP TABLE権限が必要です。