更新可能現在日付および更新可能タイムスタンプに基づくRANGE_N PPI式の最適な調整 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage
次のルールと指針は、ALTER TABLE TO CURRENT文を使用して最適に調整できるRANGE_Nパーティション式を指定するときに適用されます。ALTER TABLE TO CURRENTを参照してください。
  • RANGE_N関数のテスト式では、指定された範囲リストの位置を決定するために使用される値を指定します。

    テスト式でDATE関数、CURRENT_DATE関数、またはCURRENT_TIMESTAMP関数のいずれかを指定する場合、Teradata Databaseは調整中にすべての行をスキャンします。これは、DATE、CURRENT_DATE、またはCURRENT_TIMESTAMPの値が変わるにつれ、式の値が変わるためであり、各行は別のパーティションに移動する候補になります。

    テスト値は、結果のデータ型TIMESTAMPを持つことはできません。このため、テスト値でCURRENT_TIMESTAMP関数を指定する場合、テスト値の結果がBYTEINT、SMALLINT、BYTEINT、またはDATEのデータ型を持つ値となるような方法で使用する必要があります。

  • DATE関数、CURRENT_DATE関数、またはCURRENT_TIMESTAMP関数を最初の範囲の開始式で指定してから、テーブルにALTER TABLE TO CURRENT文を実行するものと想定します。

    新しいDATE値、CURRENT_DATE値、またはCURRENT_TIMESTAMP値を使用して解決される最初の範囲の開始式が、パーティション境界上にある場合、Teradata Databaseは一致したパーティションに先行するすべてのパーティションを削除します。

    これは、DROP RANGE句を指定するALTER TABLE文の実行と等しくなります。

  • 終了式にDATE関数、CURRENT_DATE関数、またはCURRENT_TIMESTAMP関数の任意のを指定する場合、NO RANGEパーティションについて次のことが当てはまります。
    NO RANGEの指定の有無 Teradata Databaseの動作
    指定する場合 NO RANGEパーティションから行をスキャンして、新しく解決された日付に基づきパーティション化します。
    指定しない場合 行はスキャンされません。

    パーティション式は、変更された範囲の値を格納するために変更されます。

    これは、ADD RANGE句を指定するALTER TABLE文の実行と等しくなります。

  • DATE関数、CURRENT_DATE関数、またはCURRENT_TIMESTAMP関数を開始式と終了式の両方で指定する場合、上記の2つの項目の両方が当てはまります。

    Teradata Databaseは、NO RANGEパーティションを指定したときに、NO RANGEパーティションで行をスキャンする必要があるため、可能な場合はNO RANGEパーティションを定義せずにで、DATE関数、CURRENT_DATE関数、またはCURRENT_TIMESTAMP関数の任意のをパーティション式に指定する必要があります。

  • パーティション式が複数の範囲で定義され、DATE関数、CURRENT_DATE関数、またはCURRENT_TIMESTAMP関数の任意のを最初の範囲の開始式、最後の範囲の終了式、またはその両方で指定する場合、ALTER TABLE TO CURRENT調整が最適化されます。

    最初の範囲の開始式、または最後の範囲の終了式以外の範囲にDATE関数またはCURRENT_DATE関数を指定する場合、Teradata Databaseは調整中にすべての行をスキャンし、必要に応じて再パーティション化します。

  • 終了式にDATE関数、CURRENT_DATE関数、またはCURRENT_TIMESTAMP関数の任意のを指定する場合、次のことが当てはまります。
    • RANGE_N条件にDATE関数またはCURRENT_DATE関数を指定すると、通常、ALTER TABLEロジックが簡単になり、ALTER TABLE文を実行して範囲をADDまたはDROPする代わりに、ALTER TABLE TO CURRENT文を定期的に実行できるようになります。
    • 最初より大きいレベルでRANGE_N関数を指定する場合、最初の範囲の開始式と最後の範囲の終了期間式の両方で、DATE関数、CURRENT_DATE関数、またはCURRENT_TIMESTAMP関数を指定する必要があります。

      さらに、同じ数のパーティションを削除および追加することによって、調整を最適化できます。そうでない場合、Teradata Databaseはテーブルのすべての行をスキャンする必要があります。

  • RANGE_Nパーティション式にDATE関数またはCURRENT_DATE関数を指定すると、値の調整でALTER TABLEロジックが簡単になる場合があります。

    このため、ALTER TABLE文を指定して範囲をADDまたはDROPする代わりに、ALTER TABLE TO CURRENT文を定期的に実行できます。

  • パーティション レベルの最初のレベルについてRANGE_N関数を指定する場合、最初の範囲の開始式と最後の範囲の終了式の両方で、DATE関数、CURRENT_DATE関数、またはCURRENT_TIMESTAMP関数の任意のを指定する必要があります。

    調整操作では、同じ数のパーティションを削除および追加する必要があります。そうしないと、Teradata Databaseは指定されたテーブルまたは結合インデックスのすべての行をスキャンする必要があります。