16.20 - ANSI System-Timeテーブルの行パーティション化 - Teradata Vantage NewSQL Engine

Teradata Vantage™ ANSIテンポラル テーブル サポート

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1186-162K-JPN

問合わせのパフォーマンスを高めるには、テンポラル テーブルの行をパーティション化する必要があります。パーティション化により、テーブルの行を論理的にオープン行とクローズ行にグループ化します。オープン行の問合わせは自動的にオープン行を含むパーティションに向けられます。

テンポラル テーブルに列パーティション化を適用することもできますが、ここで説明する行パーティション化が、テンポラル テーブルに使用されるパーティション化のタイプの1つとして必ず構成される必要があります。

例: ANSI System-Timeの行パーティション化

system-timeテーブルを行パーティション化するには、次のPARTITION BY句を使用します。

CREATE MULTISET TABLE employee_systime (
       eid INTEGER NOT NULL,
       ename VARCHAR(10) NOT NULL,
       deptno INTEGER NOT NULL,
       sys_start TIMESTAMP WITH TIME ZONE NOT NULL
                              GENERATED ALWAYS AS ROW START,
       sys_end TIMESTAMP WITH TIME ZONE NOT NULL
                            GENERATED ALWAYS AS ROW END,
       PERIOD FOR SYSTEM_TIME(sys_start, sys_end)
   ) PRIMARY INDEX(eid) WITH SYSTEM VERSIONING
   PARTITION BY
      CASE_N (END(SYSTEM_TIME) >= CURRENT_TIMESTAMP, NO CASE);

パーティション化式では、sys_endの代わりにEND(SYSTEM_TIME)を使用する場合があります。

現在パーティションの保守

時間の経過とともに現在行は履歴行になるので、ALTER TABLE TO CURRENT文を定期的に使用して、現在パーティションの履歴行を履歴パーティションに移動する必要があります。ALTER TABLE TO CURRENTではパーティション式を再度解決します。これにより、各行は最新のパーティション式でそれぞれに適したパーティションに移動されます。以下に例を示します。

ALTER TABLE  temporal_table_name  TO CURRENT;

この文では、表に定義されたプライマリキーと固有性制約のために自動的に作成される、システム定義の結合インデックスも更新します。