EXPLAINリクエスト修飾子句の用語 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLリクエストおよびトランザクション処理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ykx1561500561173.ditamap
dita:ditavalPath
ja-JP/ykx1561500561173.ditaval
dita:id
B035-1142
Product Category
Software
Teradata Vantage

EXPLAIN句で使用されるさまざまな用語について、次のリストで説明します。自己説明句はリストに挙げられていません。

説明
:*
  Teradata Databaseでは、この文字列を使用して増分計画中のリクエストに挿入する中間結果をマスクするようにDBS制御フィールドが設定されているため、動的クエリー計画のEXPLAINの出力からマスクされている値を置換したことを示します。
m1 column partitions of …
  この句は、列パーティション化されたテーブルまたは結合インデックスについて、最大m1個の列パーティションにアクセスする必要があることを意味しています。m1個の列パーティションのそれぞれに使用できる列パーティションのコンテキストが存在します。

この句が出現する場合、列パーティション化されたテーブルまたは結合インデックスは行パーティション化されていません。

m1 2。アクセス対象の列パーティションの1つが削除列パーティションである可能性があります。

該当する行がない場合は、m1個の列パーティションの一部にはアクセスする必要がなくなります。

テーブル名または結合インデックス名の後ろにusing rowid Spool句が続くことがあります。この場合、m1は行IDスプールの使用時にアクセスされる列パーティションの数になります。その一方、using rowid Spool句のm2は行IDスプールをビルドするためにアクセスされる列パーティションの数になります。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやDELETE、JOIN、MERGEなどのステップで使用されます。

削除操作の場合、Teradata Databaseが、LOBおよびROW形式の列パーティション以外の削除済み行のストレージを直ちに再利用することはありません。テーブルまたは結合インデックスのすべての行の後続の高速パス削除では、以前に削除された行を含む、テーブルで削除されたすべての行のストレージが再利用されます。

m1 column partitions (c1 contexts) of …
  この句は、列パーティション化されたテーブルまたは結合インデックスについて、最大m1個の列パーティションに、c1個の列パーティション コンテキストを使用してアクセスする必要があることを示します。

この句が出現する場合、列パーティション化されたテーブルまたは結合インデックスは行パーティション化されていません。

m1 ≥ 2。

2 < c1 < m1-1

c1は使用できる列パーティション コンテキストの数と等しいか、それより1少ない数になります。

アクセス対象の列パーティションの1つが削除列パーティションである可能性があります。該当する行がない場合は、m1個の列パーティションの一部にはアクセスする必要がなくなります。

using CP merge Spool句またはusing covering CP merge Spool句がテーブル名または結合インデックス名の後ろに続きます。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやDELETE、JOIN、MERGEなどのステップで使用されます。

m1個の列パーティションにアクセスするために、その列パーティションの列は、該当する行について射影されたすべての列が取得されるまで、一度に最大c1個の列パーティションが、列パーティション化されたスプールにマージされます。

1回以上のマージで、削除列パーティションへのアクセスが必要になることがあります。このようなマージごとの削除列パーティションが、m1に含まれます。

c1m1よりも大幅に少なく、取得の選択性が非常に低い場合にはパフォーマンスが低下することがあります。この場合は、アクセスする必要のある列パーティションの数を減らす、テーブルのデータ ブロック サイズを減らす、列パーティションを結合して列パーティションの数を少なくする、またはPPICacheThrPを増やす(そのために使用できる十分なメモリがある場合)ことを検討してください。

削除操作の場合、Teradata Databaseが、LOBおよびROW形式の列パーティション以外の削除済み行のストレージを直ちに再利用することはありません。テーブルまたは結合インデックスのすべての行の後続の高速パス削除では、以前に削除された行を含む、テーブルで削除されたすべての行のストレージが再利用されます。

n partitions of ..。
  この句は、n個の組み合わせパーティションのみがアクセスされることを意味します。nは1より大きくなります。

この句は、行パーティション プライマリ インデックス付きの(RPPI)テーブルまたは結合インデックスにのみ適用されます。

n1 combined partitions (one column partition) of …
  この句は、列パーティション テーブルまたは結合インデックスの複数の行パーティションのうちの1つの列パーティションにアクセスする必要があることを意味しています。この句が出現する場合、テーブルまたは結合インデックスは行IDを通してアクセスされます。

この句が出現する場合、テーブルまたは結合インデックスは行IDを通してアクセスされます。

テーブル名または結合インデックス名の後ろにusing rowid Spool句が続くことがあります。この場合、行IDスプールの使用時に1つの列パーティションがアクセスされます。その一方で、using rowid Spool句のm2は行IDスプールをビルドするためにアクセスされる列パーティションの数になります。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやDELETE、JOIN、MERGEなどのステップで使用されます。

n1 combined partitions (m1 column partitions) of …
  この句は、テーブルまたは結合インデックスの最大m1個の組み合わせパーティションの行または列にアクセスする必要があることを示します。

列パーティション化レベルごとに、m1個の列パーティションにアクセスする必要があります。m1個の列パーティションのそれぞれに使用できる列パーティションのコンテキストが存在します。

この句が出現する場合、列パーティション化されたテーブルまたは結合インデックスは、行パーティション化と列パーティション化の両方が行なわれています。アクセス対象の列パーティションの1つが削除列パーティションである可能性があります。

該当する行がない場合は、m1個の列パーティションの一部にはアクセスする必要がなくなります。

テーブル名または結合インデックス名の後ろにusing rowid Spool句が続くことがあります。この場合、m1は行IDスプールの使用時にアクセスされる列パーティションの数になります。その一方、using rowid Spool句のm2は行IDスプールをビルドするためにアクセスされる列パーティションの数になります。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやDELETE、JOIN、MERGEなどのステップで使用されます。

削除操作の場合、Teradata Databaseが、LOBおよびROW形式の列パーティション以外の削除済み行のストレージを直ちに再利用することはありません。行パーティションのすべての行の後続の高速パス削除では、以前にそのパーティションで削除された行を含む、その行パーティションのすべての削除済み行のストレージが再利用されます。テーブルまたは結合インデックスのすべての行の後続の高速パス削除では、以前に削除された行を含む、テーブルで削除されたすべての行のストレージが再利用されます。

n1 combined partitions (m1 column partitions and c1 contexts) of …
  この句は、テーブルまたは結合インデックスの最大n1個の組み合わせパーティションの行または列にアクセスする必要があることを示します。

列パーティション化レベルごとに、m1個の列パーティションにアクセスする必要があります。この句が出現する場合、列パーティション化された表または結合インデックスは、行パーティション化と列パーティション化の両方が行なわれています。

列パーティション化レベルごとに、c1個の列パーティション コンテキストが最大m1個の列パーティションにアクセスするために使用されます。n1 2。

m1 2。

2 < c1 < m1-1であり、使用できる列パーティション コンテキストの数と等しいか、それより1少ない数になります。

アクセス対象の列パーティションの1つが削除列パーティションである可能性があります。該当する行がない場合は、m1個の列パーティションの一部にはアクセスする必要がなくなります。using CP merge Spool句またはusing covering CP merge Spool句がテーブル名または結合インデックス名の後ろに続きます。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやDELETE、JOIN、MERGEなどのステップで使用されます。m1個の列パーティションにアクセスするために、その列パーティションの列は、該当する行について射影されたすべての列が取得されるまで、一度に最大c1個の列パーティションが、列パーティション化されたスプールにマージされます。

1回以上のマージで、削除列パーティションへのアクセスが必要になることがあります。このようなマージごとの削除列パーティションが、m1に含まれます。

c1m1よりも大幅に少なく、取得の選択性が非常に低い場合にはパフォーマンスが低下することがあります。この場合は、アクセスする必要のある列パーティションの数を減らす、テーブルのデータ ブロック サイズを減らす、列パーティションを結合して列パーティションの数を少なくする、またはPPICacheThrPを増やす(そのために使用できる十分なメモリがある場合)ことを検討してください。

削除操作の場合、Teradata Databaseが、LOBおよびROW形式の列パーティション以外の削除済み行のストレージを直ちに再利用することはありません。行パーティションのすべての行の後続の高速パス削除では、以前にそのパーティションで削除された行を含む、その行パーティションのすべての削除済み行のストレージが再利用されます。テーブルまたは結合インデックスのすべての行の後続の高速パス削除では、以前に削除された行を含む、テーブルで削除されたすべての行のストレージが再利用されます。

aggregate results are computed globally …
  この句は、示されているマップ内のすべてのAMPに対して合計が集約されることを意味します。

この場合、Teradata DatabaseはARSA集約アルゴリズムの4つのステップをすべて実行します。

  1. マップ内の各AMPにローカルで集約します。
  2. ローカルな集約をそれらのターゲットAMPに再構築。
  3. 再構築した集約のソート。

    プロセスのこの段階には、重複行の排除も含まれます。

  4. 最終的な集約を計算するためのグローバルな集約。
aggregate results are computed locally …
  この句は、示されているマップ内の各AMPに合計がローカルで集約されることを意味します。

この場合、Teradata DatabaseはARSA集約アルゴリズムのステップのローカル集約のみを実行します。

all partitions of …
  この句は、プライマリ インデックスが付けられている行パーティション化されたテーブルまたは結合インデックス用の単一AMPに対するプライマリ インデックス アクセスのために、Teradata DatabaseがAMPに含まれるすべての組み合わせパーティションにアクセスすることを意味します。

この句は、列パーティション化されたテーブルまたは結合インデックスには適用されません。これらのオブジェクトには、プライマリ インデックスがないためです。

a single column partition of …
  この句は、列パーティション テーブルまたは結合インデックスの1つの列パーティションのみにアクセスする必要があることを示しています。この句が出現する場合、列パーティション化された表または結合インデックスは行パーティション化されていません。また、この句は、列パーティションがROW形式であるか、アクセスがインデックスまたは行IDスプールからの行ID経由であるため、削除列パーティションはアクセスされる必要がないことを示しています。

テーブル名または結合インデックス名の後ろにusing rowid Spool句が続くことがあります。この場合、行IDスプールの使用時に1つの列パーティションがアクセスされます。その一方で、using rowid Spool句のm2は行IDスプールをビルドするためにアクセスされる列パーティションの数になります。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやDELETE、JOIN、MERGEなどのステップで使用されます。

削除操作の場合、Teradata Databaseが、LOBおよびROW形式の列パーティション以外の削除済み行のストレージを直ちに再利用することはありません。テーブルまたは結合インデックスのすべての行の後続の高速パス削除では、以前削除された行を含むテーブルのすべての削除済み行のストレージが再利用されます。

a single combined partition of …
  この句は、列パーティション テーブルまたは結合インデックスの1つの行パーティションのみの1つの列パーティションのみにアクセスする必要があることを意味しています。

この句が出現する場合、列パーティション化されたテーブルまたは結合インデックスは、行パーティション化と列パーティション化の両方が行なわれています。また、この句は、列パーティションがROW形式であるか、アクセスが行ID経由であるため、削除列パーティションはアクセスされる必要がないことを示しています。

テーブル名または結合インデックス名の後ろにusing rowid Spool句が続くことがあります。この場合、行IDスプールの使用時に1つの列パーティションがアクセスされます。その一方で、using rowid Spool句のm2は行IDスプールをビルドするためにアクセスされる列パーティションの数になります。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやDELETE、JOIN、MERGEなどのステップで使用されます。

a single partition of …
  この句は、プライマリ インデックスが付けられている行パーティション化されたテーブルまたは結合インデックスに含まれる単一の組み合わせパーティションにのみアクセスすることを意味しています。

この句は、列パーティション化されたテーブルまたは結合インデックスには適用されません。

(all_amps) …
  この句は、ステップが送信されたマップ内のすべてのAMPにスプールが作成されたことを示します。 スプールはすべてのAMPに作成されるため、ダイナミックAMPグループは必要ありません。
all-AMPs JOIN step in mapname by way of a RowHash match scan ..。
  この句は、結合ステップが示されているマップのすべてのAMPで処理されることを意味します。 最初の行は最初のテーブルから検索され、その行のハッシュ コードを使用して2番目のテーブルから行を検索します。
各行ハッシュ値が照合され、次のように処理されます。
  1. 行ハッシュ値が比較されます。等しくない場合、行ハッシュ値が一致するまで、もしくはテーブルのデータがなくなるまでより大きな行ハッシュ値が使用され、もう一方のテーブルから行を読み取ります。
  2. 照合が見つかった場合、同じハッシュ コードを持つ行の各ペアが2つのテーブルから(一度に1つずつ)アクセスされます。このようなペアのそれぞれについて、結合条件が満たされた場合、結合結果行が生成されます。
  3. 同じ行ハッシュ値を持つすべての行が両方のテーブルから処理されたら、もう1つの行が各テーブルから読み取られます。これら2つの行の行ハッシュ値が比較され、比較プロセスが再始動します。
all-AMPs RETRIEVE step in mapname by way of an all-rows scan ..。
  この句は、テーブルが格納されている、示されているマップ内のすべてのAMP上でテーブルのすべての行が1行ずつスキャンされることを意味します。
all partitions of …
  この句は、プライマリ インデックスが付けられている行パーティション化されたテーブルまたは結合インデックス用の単一AMPに対するプライマリ インデックスアクセスのために、AMPに含まれるすべての組み合わせパーティションがアクセスされることを意味します。
a rowkey-based …
  結合はパーティションによるハッシュ ベースです(つまり、rowkeyによる)。この場合、すべてのパーティション列およびプライマリ インデックス列に対する等号の制約があります。このことにより、さらに高速な結合が可能になります。除去されていない行パーティションはそれぞれ、最大でも1つだけの他の行パーティションと結合する必要があるためです。

句が指定されていない場合、結合はハッシュ ベースです。つまり、派生されるハッシュからプライマリ インデックス列に等号制約があります。

なお、いずれの方法でも結合条件が検証される必要があります。

<BEGIN ROW TRIGGER LOOP>
  行トリガーで定義されているトリガー アクション文の処理は、現在のAMPステップ、つまり、EXPLAINテキストのステップnから開始されます。

現在のステップから、ステップnのEND ROW TRIGGER LOOP句が現われるステップまでのすべてのAMPステップが行トリガー ループを構成します。

by skipping global aggregation
  コスト効率が高いと推定した場合、Teradata Databaseは、グローバル集約をスキップして、行の再配置とグローバルな集約を回避します。
by skipping local aggregation
  コスト効果が高いと推定した場合、Teradata Databaseは、ローカル集約をスキップすることで、スプールへの最初の書き出しとスプール行の並べ替えにかかるコストを回避します。
by the hash code of ([database_name.]table_name.column_name)。
  スプールの並べ替えは、指定されている列で行ハッシュ順に実行されます。
by using cache during local aggregation
  コスト効果が高いと推定した場合、Teradata Databaseは、ローカル集約時に出力行をキャッシュしてキャッシュ内のすべての重複行をまとめることで、多数の入力行の並べ替えを回避します。
by way of an all-rows scan
  指定された述部条件に対する単一パーティション スキャンが不可能なため、テーブル内のすべての行がスキャンされます。単一パーティション スキャンおよびBEGIN/END範囲関数を参照してください。
by way of index # n and the bit map in Spool n ..。
  行IDに付随するデータ行は、関連付けられているビットがビットマップでオンになっている場合に限りアクセスされます。
by way of the primary AMP index …
  プライマリAMPインデックス列に、示されたテーブルの単一AMPへのアクセスのみをシステムに許可するという条件があることを示します。
by way of the primary index …
  プライマリ インデックス列に、示されたテーブルの単一AMPへのアクセスのみをシステムに許可するという条件があることを示します。 プライマリ インデックスを使用すると、テーブルまたは除去されていない結合行パーティションでそのプライマリ インデックス値を持つ行に直接アクセスできます。
by way of the sort key in spool field1 …
  タグ ソートを可能にするためにField1が作成されます。
by way of the unique primary index …
  固有プライマリ インデックス列に、単一AMPおよび、多くても、示されたテーブルの単一行へのアクセスのみをシステムに許可するという条件があることを意味します。
(compressed columns allowed)
  ターゲットのスプールに圧縮値を含めることができます。
computed globally …
  この計算には、ソース データの圧縮列に基づくすべての中間スプール データが含まれます。
condition …
  テーブルの行を結合修飾する中間条件(全体結合条件と比較)。
duplicated on all AMPs in mapname..。
  結果を作成するために使用する中間データを含むスプールが中間データと比較されるデータを含む、示されているマップ内の全AMPにコピーされます。
eliminating duplicate rows …
  重複行は、任意のテーブルの非固有列の選択の結果として、またはMULTISETテーブルからの選択の結果として、スプールに存在することがあります。これは、DISTINCT操作です。
<END ROW TRIGGER LOOP for step n.> (<ステップnのEND ROW TRIGGER LOOP。>)
  行トリガー ループ処理の最後のAMPステップであることを示します。

制御がトリガー外の次のステップに移行します。

END TRANSACTION step …
  処理が完了して、データ上のロックがリリースされることを示します。トランザクションによる変更がコミットされます。
enhanced by dynamic partition elimination …
  動的行パーティション排除が使用された結合条件を意味します。
estimated size …
  この値は、スプールされたデータに対応するために必要なスプール ファイルの推定サイズです。これはあくまでも見積もりです。適切な統計を収集すると、見積もりの精度が向上します。統計の収集の詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>のCOLLECT STATISTICS (最適化ルーチン形式)文の説明を参照してください。
estimated time …
  この概算の時間は、操作全体を構成する副操作の平均時間および操作に関与する可能性のある行数に基づいています。また、時間見積もりの正確性は見積もりサイズの正確性により影響されます。ここでは、システム上で実行中の他のワークロードは考慮に入っていません。
execute the following steps in parallel ..。
  この句は同時に処理される一連のAMPステップを特定できます。リストのすぐ後の説明文では各ステップの実行を説明します。

from n sources..。

from n left sources..。

from n right sources..。

  単一ステップで実行される、複数のソースからのRETRIEVE、JOIN、または集約。
(group_amps)
  この句は、スプールがAMPのグループに作成されたことを示すために使用されます。行がAMP用に生成されると、ステップを実行する各AMPは、動的AMPグループに入ります。行がAMP用に生成されないと、動的AMPグループには入りません。
grouping by field n ([database_name.]table_name.column_expression)。
  指定されているグループ化列の式が、指定されているテーブルのn列に基づいています。
Hash table is built from Spool n and is duplicated to all AMPs in mapname
  この句は、ステップがAllRowsOneAMPインメモリ ハッシュ結合ステップであることを示します。
in mapname
  この語句は、AMPのコレクションを定義するマップを意味します。
in mapname covering mapname, mapname[, mapname…]
  この句は、少なくとも、"covering"の後に記載されているマップ内のすべてのAMPを含むマップを意味します。
INSERT into a single column partition of …
  この句は、1つのユーザー指定の列パーティションのみを使用して、少なくとも1つの行がテーブルまたは結合インデックスに挿入されていることを意味します。
INSERT into m3 column partitions of …
  この句は、m3の列パーティションを使用して、少なくとも1つの行がテーブルまたは結合インデックスに挿入されていることを意味します。

この場合の値は、m3 2になります。

in view view_name
  指定されている[database_name].table_nameは、view_nameビューを使ってアクセスされます。
join condition …
  結合に適用される全ての制約。

次のリクエストでは、employee.empno = department.mgrnoが結合に適用される制約です。

     SELECT deptname, name
     FROM employee, department
     WHERE employee.empno = department.mgrno;

結合条件は、外部結合のON句、またはANSI SQL規格形式の内部結合でも指定されます。

JOIN step by way of an all-rows scan …
  この句は、スプールされた行とプライマリ テーブルの行のどちらか一方かまたは両方が、それらの行が常駐する各AMP上で行ごとに検索され、結合条件を満たす行が結合されることを意味します。
joined using a single partition exclusion hash join, with a join condition of (join_condition)
  Teradata Databaseは、join_conditionで単一パーティションの排他ハッシュ結合を使用して、2つのスプールを結合します。
(Last Use)
  この用語は、中間データを含むスプールへの最後の参照を特定します。このAMPステップの後で、スプールは開放されます。
(load committed)…
  読み取りモード。Teradata Databaseがロード コミット済みの行を読み取ることを示します。

読み取りモードが(load uncommitted)の場合は、Teradata Databaseが論理的に削除された行を処理中に無視することを示します。その他すべての行は読み取られます。

ロード分離の詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>および<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。

(load isolated)…
  ステップで実行される変更操作がロード分離であることを示します。

この句が出現する場合、変更されているテーブルはロード分離テーブルまたはロード分離テーブルで定義された結合インデックスです。

ロード分離である削除操作は、行を物理的に削除するのではなく、行を論理的に削除されたもの、および行のバージョン情報が設定されたものとしてマークします。ロード分離である更新操作は、古い値が保持されるなどの対象行にバージョンを設定します。ロード分離である挿入操作は、同時読み取りユーザーに行のコミット プロパティを提供するロード識別値を持つ行をマークします。

そのような変更の最中に、テーブルまたは結合インデックスの同時読み取りセッションは、引き続きロード コミット済み行を取得することができますが、実行中のロードでの変更はコミットするまで表示されません。

ロード分離の詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>および<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。

locally on the AMPs …
  各AMPが担当するスプールされた中間または結果データは、AMP上に格納され、同じリクエストを処理するその他のAMPに複製または再分配されません。
lock …
  リクエストによってアクセスされるデータベース オブジェクトにロック マネージャがACCESS、READ、WRITE、またはEXCLUSIVEロックをかけます。
MERGE into a single column partition of …
  この句は、1つのユーザー指定の列パーティションのみを使用して、テーブルまたは結合インデックスに行がMERGE挿入されていることを意味します。
MERGE into m3 column partitions of …
  この句は、1つの列パーティション コンテキストを使用してユーザー指定されたm3個の列パーティションで、テーブルまたは結合インデックスに行が挿入されていることを示します。

m3 2。

Teradata Databaseは、行の挿入に2つの方法のどちらかを使用します。
  • ソース行全体に1回のパスを実行してその行を挿入する。

    読み取る各ソース行の列値が、ターゲットの1回のパスで処理される列パーティションごとに個別の128KBの出力バッファにバッファされます。Teradata Databaseは、バッファが満杯になるか、すべてのソース行の読み取りを完了した時点で、そのバッファをそれに対応する列パーティションに書き出します。

    ソース行は、MERGEステップのために格納する必要がないか、前のAMPステップですでに格納されているかのどちらかになります。この方法のMERGEステップでは、with buffered output句が報告されます。

  • ソース行でバッファを満たしてからソートする。

    Teradata Databaseは、各列パーティションごとにバッファ内の行を1回スキャンして、列パーティション値を、その列パーティションに挿入します。これは、すべてのソース行を読み取り終わるまで繰り返されます。

    この方法では、行のスプールとソートのAMPステップを排除できます。これは、ターゲットの列パーティション化されたテーブルに行パーティションが存在していてソースがNoPIテーブルのときに、バッファされたソース行の各セットを各組み合わせパーティションに挿入するためのデータが十分にある場合に効率的です。

    ソースがNoPIテーブルでない場合、この方法はデータ ブロックに対する非効率な再読み取りと書き換えが発生することがあります。これは、少数の列パーティション値が組み合わせパーティションに一度に入力される場合にのみ発生します。

    この方法のMERGEステップでは、with buffered input and sorted input句が報告されます。

最適化ルーチンは、コストが最小になる方法を使用するように提案します。ただし、行を挿入するときに、AMPが別の方法に変更する場合があります(別の方法が実行に適しているとAMPが判断した場合)。

MERGE into m3 column partitions (c3 contexts) of …
  この句は、c3個の列パーティション コンテキストを使用してユーザー指定されたm3個の列パーティションで、テーブルまたは結合インデックスに行が挿入されていることを示します。

m3 2。

2 < c3 < m3

Teradata Databaseは、行の挿入に2つの方法のどちらかを使用します。
  • 回のパスをソース行全体に実行してその行を挿入する。

    読み取る各ソース行の列値が、ターゲットの1回のパスで処理される列パーティションごとに個別の128KBの出力バッファにバッファされます。バッファが満杯になるか、すべてのソース行の読み取りを完了した時点で、バッファをそれに対応する列パーティションに書き込みます。

    ソース行は、MERGEステップのために格納する必要がないか、前のAMPステップですでに格納されているかのどちらかになります。ソースがACCESSロック付きのテーブルまたは結合インデックスの場合、ソースは必ずスプールされます。この方法ではソース行全体に複数のパスが必要になりますが、通常は次に示す方法よりもコストが少なくなります。

    この方法のMERGEステップについて、Teradata Databaseはwith buffered output句を報告します。

  • ソース行でバッファを満たしてからソートする。

    Teradata Databaseは、各列パーティションごとにバッファ内の行を1回スキャンして、列パーティション値を、その列パーティションに挿入します。プロセスのこの段階は、すべてのソース行の読み取りが完了するまで繰り返されます。これにより、行のスプールとソートのAMPステップを排除できます。また、ソース行全体に複数のパスを実行することを避けられます。この方法は、ターゲットの列パーティション化されたテーブルに行パーティションが存在していてソースがNoPIテーブルのときに、バッファされたソース行の各セットを各組み合わせパーティションに挿入するためのデータが十分にある場合に効率的です。

    ソースがNoPIテーブルではない場合、この方法ではデータ ブロックに対する非効率な再読み取りと書き換えが発生することがあります。この非効率は、少数の列パーティション値が複合パーティションに一度に入力されるときにのみ発生することがあります。

    この方法のMERGEステップでは、with buffered input and sorted input句が出現します。

最適化ルーチンはAMPに対して使用する方法を提案しますが、行を挿入するときに、AMPが別の方法に変更する場合があります(別の方法が実行に適しているとAMPが判断した場合)。

merge with matched updates and unmatched inserts …
  単一のステップで次の3つの操作のどれでも実行できるAMPステップ。
  • 更新操作と挿入操作の両方
  • 挿入操作のみ
  • 更新操作のみ

このステップは、ソース テーブルが常にソース テーブルの結合列で分散されることを前提としています。これは、ターゲット テーブルのプライマリ インデックスとの等式制約としてON句で指定され、RowKeyに基づいてソートされます。

このステップは、ターゲット行を更新する条件を満たすソース行と、挿入の条件を満たすソース行を識別して、RowKeyベースのマージ結合を内部的に実行してから、更新と挿入を実行します。

このステップは、マージ操作中にターゲット テーブルのデータ ブロックの読取りおよび書込みが一度だけ実行されることを保証するので、MultiLoadのAPPLYフェーズに非常に似ています。

from foreign_table metadata

which is binpacked by size

by using external metadata in Spool n to access foreign_table

  関連するテーブルの少なくとも1つが外部テーブルであることを示します。

外部テーブルでは、Teradata DatabaseがAWS S3などの外部のクラウドベースのデータ ストレージからデータにアクセスできるため、最初にデータを元々あった場所から手動でデータベースに移動する必要はありません。外部テーブルは、ホスト名やパスのほか、外部ストレージを参照するその他のメタデータによって識別されます。Teradata Databaseは、標準SQLを使用して、外部テーブル内の半構造化または非構造化データを読み取り、処理することができます。例えば、Teradataの分析関数を使用してデータを調べ、データベース内のリレーショナル データに結合し、Teradata Database内の他のデータと同じようにクエリーを発行できます。

(no lock required)
  操作に必要なロックは前のAMPステップで取得されています。

このフェーズでは、前にロックが取得されたステップが常にレポートされるわけではありません。

(nonconcurrent load isolated)…
  変更操作がロード分離ではないことを示します。

この句が出現する場合、変更されているテーブルはロード分離テーブルまたはロード分離テーブルで定義された結合インデックスです。

そのような変更は、行にバージョンを設定しないロード分離ではないテーブルでの通常の変更と同様です。違いは、そのような変更が発生するとEXCLUSIVEロックが適用されることです。

そのような変更の最中は、トランザクションが終了するまで(ACCESSロックが使用される場合を含む)同時読み取りセッションがブロックされます。

ロード分離の詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>および<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。

no residual conditions …
  行全体が選択されるため、特定の検索条件はありません。すべての適用可能条件が行に適用されました。
normalizing rows …
  Teradata Databaseがソートの一部として正規化操作を実行することを示します。
of n3 combined partitions
  この句は、行パーティション化と列パーティション化の両方が行なわれている場合、テーブルまたは結合インデックスのn3個の組み合わせパーティションのそれぞれに含まれるすべての行と列が、高速パス削除で完全に削除され、削除された行の記憶域が回復されます。

n3 > 1。

of n3 combined partitions from …
  この句は、行パーティション化と列パーティション化の両方が行なわれているテーブルまたは結合インデックスのn3個の組み合わせパーティションのそれぞれに含まれるすべての行と列が、高速パス削除で完全に削除され、削除された行の記憶域が回復されます。

n3は1より大きくなります。

of n partitions from …
  この句は、プライマリ インデックスが付けられている行パーティション化されたテーブルまたは結合インデックスの場合、n個の組み合わせパーティションのそれぞれに含まれるすべての行が完全に削除される場合があることを意味しています。

nの値は、常に1より大きくなります。

場合によっては、これはパーティション全体のより高速な削除が可能になります。

この句は、列パーティション化されたテーブルまたは結合インデックスには適用されません。そのような場合には、別の句が使用されるためです。

of a single partition from …
  この句は、プライマリ インデックス付きの行パーティション化されたテーブルまたは結合インデックスの単一の組み合わせパーティションに含まれるすべての行が、完全に削除できると最適化ルーチンが判断したことを示しています。

場合によっては、これは組み合わせパーティション全体のより高速な削除が可能になります。

この句は、列パーティション化されたテーブルまたは結合インデックスには適用されません。これは、列パーティション化されたテーブルまたは結合インデックスには少なくとも2つの列パーティションが存在するためです(少なくとも1つの指定された列パーティションと削除列パーティション)。

on a reserved RowHash [in all partitions] [in n partitions] [in a single partition]…
  この句は、後でテーブルの全AMPをロックするときにグローバル デッドロックを防止するために、システムがターゲット テーブルにプロキシ ロックを配置したことを示します。オプションの句「in all partitions」、「in n partitions」、および「in a single partition」は、テーブルが行パーティションの場合にのみ表示されます。

「in all partitions」句は、テーブル レベル ロックのプロキシを示します。

「in n partitions」句は、パーティション範囲ロックのプロキシを示します。

「in a single partition」句は、単一パーティション ロックのプロキシを示します。

詳細については、プロキシ ロックを参照してください。

partial SUM
  部分的GROUP BYによる最適化がSUMステップで実行されています。
(partial-covering)
  該当するNUSIが、制約スキャンを使って問合わせを部分的にカバーします。

例えば、NUSIサブテーブルを調査して、問合わせの条件を満たす可能性がある基本テーブルの行の行ID値を入手することができますが、NUSIの基礎となる基本テーブルにアクセスして、確実に条件を満たす行を入手する必要もあります。

post join condition of …
  最適化ルーチンが遅延条件を検出し、結合後条件として処理したことを示します。この句は通常の結合条件のすぐ下に表示されます。
次の条件は結合後処理の使用をトリガーします。
  • CASE文を含む述部、または外部結合の内部テーブルを参照するNULL対応述部。
  • 外部結合と組み合わせて使用される複合OR用語を含む述部。
  • NOT INまたはNOT EXIST結合条件と組み合わせて使用される述部。
redistributed by hash code to all AMPs in mapname
  与えられたインデックス列もしくは非インデックス列の値は、同じ値がプライマリ インデックス列として格納されている、示されているマップ内の各AMPに分散されます。
right outer joined using a single partition hash join, with a join condition of (join_condition)
  Teradata Databaseは、join_conditionに2ステップの単一パーティションの右外部ハッシュ結合を使用して、スプールを左リレーションから右リレーションに結合します。
single-AMP JOIN step by way of the unique primary index …
  行はテーブルの固有プライマリ インデックスを使用して、単一のAMP上で選択されます。その行のうちハッシュ結果が第2のテーブルの固有インデックス値になる値を使用して、最初の行と別のAMP上にある2番目の行とが結合されます。
single-AMP RETRIEVE by way of unique index # n
  ハッシュ格納されているAMP の固有セカンダリ インデックスの値を元に、同AMPに格納されていたテーブルの単一行が単一AMP操作で選択されます。
single-AMP RETRIEVE step by way of the unique primary index …
  多くても、データ行がハッシュ格納されているAMPの固有プライマリ インデックスの値を元に、単一AMP操作でテーブルの単一行が選択されます。

説明文のLOCK部分で明確に説明されていませんが、テーブルは固有プライマリ インデックスによりアクセスされるため、行ハッシュ ロックが必要です。

SORT/GROUP
  部分的GROUP BYが、ソートとグループ化を同時に行なってカーディナリティを減らす際に使用されました。
SORT to normalize …
  Teradata Databaseが、ソートの一部として正規化操作を実行します。
SORT to order Spool n by row hash …
  照会するために、スプール上の行がプライマリ テーブルの行、もしくは同一AMPのもう一方のスプールの行と同じハッシュ コード順に並べ替えられる。
SORT to order Spool n by row hash and the sort key in spool field1 eliminating duplicate rows …
  スプールの行は、重複行を削除するために固有性ソートを使用してハッシュ コード順に並べ替えられます。値の固有性はfield1のデータに基づいています。
field1の内容は問合わせに依存しており、次のいずれかを構成している可能性があります。
  • スプール行のすべてのフィールドの連結(SELECT DISTINCTによる問合わせを使用する。または、UNION、INTERSECT、EXCEPT、MINUS操作を含む)
  • スプール行が形成されるデータ行を特定する行IDの連結(subquery を含む複雑な問合わせに使用される)。

固有に定義されるスプール行のその他の値(集約およびsubquery を含む複雑な問合わせに使用される)。

SORT to order Spool 1 by the sort key in spool field1 …
  スプールの行はfield1の値によりソートされます。field1の内容は、処理されるリクエストのORDER BYまたはWITH...BY句で定義される列セットによって決定されます。

例えば、“…SORT to partition by rowkey…”または“…SORT to order Spool 1 by the sort key in spool field1 (THU.JI1.b1)…”です。

SORT to partition by rowkey。
  これは、結合スプールがRowkeyベースの結合を使って結合され、適切なパーティションにソートされることを意味します。
SORT to string_1 by string_2 …
  行がstring_2ソート キーによってstring_1にソートされます。

例えば、“…SORT to partition by rowkey…”または“…SORT to order Spool 1 by the sort key in spool field1 (THU.JI1.b1)…”です。

SORT to partition Spool n by rowkey …
  最適化ルーチンが、スプールが結合されるテーブルと同じパーティション式に基づいてパーティション化されることを決定しました。つまり、スプールはrowkeyに基づいてソートされます(パーティションおよびハッシュ)。この方法でスプールをパーティション化することにより、パーティション化されたテーブルとの結合がより高速に行なえます。nはスプール番号です。
spool n
  操作中にデータを含めるために使用するスプールを識別します。
  • 通常、Spool 1はユーザーに返す前に結果を保持するために使用されます。
  • Spool 2、Spool 3などには結果を作成する中間データが含まれます。
Spool n statistics go into Spool n
  動的EXPLAINで、スプールの生成中に収集された統計が配置されているスプールを識別します。ステップで複数のスプールが生成される場合は、すべてのスプールが含まれます。
spool_n.Field …
  結合制約または比較操作で使用されているスプール行のフィールドを特定します。

例:

     personnel.employee.empno = spool_2.mgrno
     Statement 1...

この用語はリクエストの処理開始を指します。

SUM step to normalize from …
  Teradata Databaseが、集約ステップの集約の一部として正規化操作を実行することを示します。
table-level summary statistics
  Teradata Databaseがテーブルについてのサマリー統計(詳細統計ではない)を計算していることを説明しています。
The actual size of Spool n is n row[s] (n bytes)。
  可能な場合は、スプールの実際のサイズを報告します。

ステップの後に、スプールn統計の格納場所が報告され、統計は統合されます。統計が追加実行時情報から取得された場合、スプールのサイズは指定されます。

The estimated time for this step is nn seconds。
  報告されるDelete、Insert、Join、Merge、Merge Delete、Merge Update、Retrieval、Sum、またはUpdateステップの見積もり時間(秒単位)。

表示される時間は時刻ではないことに注意してください。別の操作と比較するために使用できる任意の測定単位と見なしてください。

the estimated time is nn seconds。
  リクエスト全体を完了するのにかかる見積もり時間(秒単位)。

表示される時間は時刻ではありません。別の操作と比較するために使用できる任意の測定単位と見なしてください。

The following is the dynamic explain for the request。
  この句は、問合わせ計画が、対象リクエストの増分計画および実行(IPE)によって生成された動的計画であることを示します。この句が含まれる場合、動的計画の最初のステップの前に置かれます。
The size of Spool x is estimated with low confidence to be y rows (z bytes)。
  スプールnの見積もりサイズ。これは常に低い信頼度で報告されます(最適化ルーチンの信頼度レベルについてを参照)。mはスプールの見積もりカーディナリティで、oはスプール内の見積もりバイト数です。

バイト単位のスプール サイズは次のように計算されます。



行サイズは、行に可変長または圧縮された列が含まれている場合の推定平均行サイズです。

… the Spatial index subtable …
  作成または削除対象のインデックスは、空間NUSIです。
This request is eligible for incremental planning and execution (IPE) but dynamic plan does not support USING request modifier.The following is the static plan for the request:
  これは増分計画および実行に適格なリクエストの汎用計画ですが、DYNAMIC EXPLAINはサポートされていません。示されている句よりも前にUSINGリクエスト修飾子が置かれているためです。この句が含まれる場合、DYNAMIC EXPLAINリクエスト修飾子を含むEXPLAINテキストの最初のステップより前に置かれます。
This repeated request is eligible for incremental planning and execution (IPE) but it may also be eligible to be cached so a generic plan is tried.The following is the static plan for the request:
  これは、増分計画および実行に適格なリクエストの汎用計画です。ただし、キャッシュに入れることができる可能性がある汎用計画の繰り返されたリクエストであるため、Teradata Databaseは汎用計画の2回目の試行を行ないます。汎用計画は必ず静的計画になります。

この句が含まれる場合、DBC.DBQLExplainTblの汎用計画の最初のステップより前に置かれます。計画のEXPLAINテキストがDBQLによってログに記録されている場合、EXPLAIN、STATIC EXPLAIN、DYNAMIC EXPLAINのいずれかのリクエスト修飾子を指定すると、示されません。

This request is eligible for incremental planning and execution (IPE) but doesn't meet thresholds. The following is the static plan for the request:
  Teradata Databaseはこの句について、静的計画の最初のステップの前にレポートします。

これは、増分計画および実行に適格な特定の静的計画ですが、システム指定の特定のコストしきい値を満たしていません。Teradata Databaseがリクエストを実行すると、この静的計画が生成および実行されます。

This request is eligible for incremental planning and execution (IPE) but dynamic explain does not support USING request modifier.The following is the static plan for the request:
  リクエストはこの静的計画に基づく増分計画および実行に適格です。ただし、動的計画は、USINGリクエスト修飾子が含まれるリクエストには表示できないので、汎用計画が代わりに表示されます。この句が含まれる場合、静的計画の最初のステップの前に置かれます。

汎用計画は必ず静的計画になります。リクエストが実行されると、汎用計画、特定の静的計画、または動的計画のいずれかが生成および実行される可能性があります。この句は、DBQLによってログが記録されている計画のEXPLAINテキスト内のDBC.DBQLExplainTblでは示されません。

This request is eligible for incremental planning and execution (IPE).The following is the static plan for the request:
  Teradata Databaseはこの句について、静的計画の最初のステップの前にレポートします。

これは、増分計画および実行に適格な特定の静的計画ですが、リクエストが実行される場合、この静的計画ではなく、動的計画が生成および実行される可能性があります。ただし、この静的計画は、ワークロードのフィルタ、スロットル、および分類基準を評価する際に使用されます。

This request is eligible for incremental planning and execution (IPE).IPE is disabled.The following is the static plan for the request:
  これは増分計画および実行に適格なリクエストの静的計画ですが、IPEがシステムで無効です。この句が含まれる場合は、Teradata Databaseは静的計画の最初のステップの前にレポートします。

リクエストが実行されるもののIPEが引き続き無効な場合には、Teradata Databaseは静的計画を生成および実行します。リクエストが実行されてIPEが有効な場合は、動的計画が生成されます。動的計画を有効にするには、Teradataカスタマー サポートに問い合わせてください。

two-AMP RETRIEVE step by way of unique index #n
  テーブルの1行が、USI値に基づいて選択されます。
  • 多くても、サブテーブルの行が格納されているAMPにハッシュ格納されているインデックス値を使用して、USIサブテーブルの単一行が選択されます。
  • インデックス行IDのハッシュ値により、データ行が格納されるAMPが決定されます。
unsatisfiable
  最適化ルーチンは、DMLリクエストが特定のBEGINおよびEND検索条件制約のセットで定義されている場合にPeriod列の実現不可能な条件を識別するために暗黙的な制約を追加しました。述部簡略化を参照してください。
using covering CP merge Spool q (s2 subrow partitions and Last Use)

using covering CP merge Spool using covering CP merge Spool q (s1 + s2 subrow partitions and Last Use)

  これらの句は、テーブルまたは結合インデックスの列パーティションをマージするために、列パーティション化されたマージ スプールが作成および使用され、その結果としてs2個の副行列パーティションが、列パーティション化されたマージ スプールから読み取られることを示します。

s1 は、s1 + s2 中のマージに必要な中間subrow列パーティションの数は必要な結合の数を示しますを示します。

s 1が含まれていない場合、中間副行列パーティションがマージに必要なく、s2回のマージが必要になります。

必要になるマージの回数は、アクセスする必要のある列パーティションの数と、使用できる列パーティション コンテキストの数(先行する接続元句で示される)に応じて決まります。これで、この列パーティション化されたマージ スプールの使用が終わるため、このスプールを削除できます。

qは、列パーティション化されたマージ スプールのスプール番号です。

using covering CP merge Spool q (s2 subrow partitions and Last Use) and rowid Spool k (Last Use)

using covering CP merge Spool q (s1 + s2 subrow partitions and Last Use) and rowid Spool k (Last Use)

  これらの句は、テーブルまたは結合インデックスの列パーティションをマージするために、列パーティション化されたマージ スプールが作成および使用され、その結果としてs2個の副行列パーティションが、列パーティション化されたマージ スプールから行IDスプール主導で読み取られることを示します。

s1は、マージに必要な中間副行列パーティションの数を示します。

s 1 + s 2は、必要になるマージの回数を示します。

s1が含まれていない場合、中間サブ行列パーティションがマージに必要なく、s2回のマージが必要になります。

必要になるマージの回数は、アクセスする必要のある列パーティションの数と、使用できる列パーティション コンテキストの数(先行するfrom句で示される)に応じて決まります。

これで、この列パーティション化されたマージ スプールと行IDスプールの使用が終わるため、これらのスプールを削除できます。

qは、列パーティション化されたマージ スプールのスプール番号です。

kは、行IDスプールのスプール番号です。

行IDスプールのkが、前のステップではなく、このAMPステップで生成される場合は、このbuilt from句の後に使用句が続きます。

using CP merge Spool q (one subrow partition and Last Use)

using CP merge Spool q (s2 subrow partitions and Last Use)

using CP merge Spool q (s1 + s2 subrow partitions and Last Use)

  これらの句は、列パーティションのマージ スプールが作成され、テーブルや結合インデックスからの列パーティションをマージするために使用されることを示します。次いで、テーブルまたは結合インデックスのその他の列パーティションと、結果としての1つの副行列パーティションまたはs2個の副行列パーティションが、列パーティション化されたマージ スプールから読み取られます。

s1は、マージに必要な中間副行列パーティションの数を示します。

s1 + s2は、必要になるマージの回数を示します。

s1が含まれていない場合、中間副行列パーティションがマージに必要なく、1回またはs2回のマージが必要になります。

必要になるマージの回数は、アクセスする必要のある列パーティションの数と、使用できる列パーティション コンテキストの数(先行するfrom句で示される)に応じて決まります。

これで、この列パーティション化されたマージ スプールの使用が終わるため、このスプールを削除できます。

qは、列パーティション化されたマージ スプールのスプール番号です。

using CP merge Spool q (one subrow partition and Last Use) and rowid Spool k (Last Use)

using CP merge Spool q (s2 subrow partitions and Last Use) and rowid Spool k (Last Use)

using CP merge Spool q (s1 + s2 subrow partitions and Last Use) and rowid Spool k (Last Use)

  これらの句は、テーブルまたは結合インデックスの列パーティションをマージするために、列パーティション化されたマージ スプールが作成および使用され、テーブルまたは結合インデックスのその他のいくつかの列パーティションと、結果としての1つの副行列パーティションまたはs2個の副行列パーティションが、列パーティション化されたマージ スプールから行IDスプール主導で読み取られることを示します。

s1は、マージに必要な中間副行列パーティションの数を示します。

s1 + s2は、必要になるマージの回数を示します。

s1が含まれていない場合、中間副行列パーティションがマージに必要なく、1回またはs2回のマージが必要になります。

これで、この列パーティション化されたマージ スプールと行IDスプールの使用が終わるため、これらのスプールを削除できます。

qは、列パーティション化されたマージ スプールのスプール番号です。

kは、行IDスプールのスプール番号です。

行IDスプールのkが、前のステップではなく、このAMPステップで生成される場合は、このbuilt from句の後に使用句が続きます。

using rowid Spool k (Last Use)
  この句は、行IDスプールに適格なテーブル内の行IDが格納されていて、列パーティション化されたテーブルまたは結合インデックスが、この行IDスプール主導で読み取られることを意味します。

これで、この行IDスプールの使用が終わるため、このスプールを削除できます。

kは、行IDスプールのスプール番号です。

行IDスプールのkが、前のステップではなく、このAMPステップで生成される場合は、このbuilt from句の後に使用句が続きます。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやJOIN、MERGEなどのAMPステップで使用されます。

using rowid Spool k (Last Use) built from m2 column partitions
  この句は、適格なテーブル内の行IDを格納する行IDスプールkが作成され、列パーティション化されたテーブルまたは結合インデックスが、この行IDスプール主導で読み取られることを意味します。

述部の評価と行IDスプールの作成のために、列パーティション化されたテーブルまたは結合インデックスの最大m2個の列パーティションにアクセスする必要があります。

m2個の列パーティションのそれぞれに使用できる列パーティションのコンテキストが存在します。

この句が出現する場合、列パーティション化されたテーブルまたは結合インデックスが行パーティション化されていることはありません。

m2 2。

アクセス対象の列パーティションの1つが削除列パーティションである可能性があります。

該当する行がない場合は、m2個の列パーティションの一部に実際にはアクセスする必要がなくなります。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやJOIN、MERGEなどのAMPステップで使用されます。

using rowid Spool k (Last Use) built from m2 column partitions (c2 contexts)
  この句は、適格なテーブルまたは結合インデックス内の行の行IDを格納する行IDスプールが作成されることを意味しています。その後で、列パーティション化されたテーブルまたは結合インデックスが、この行IDスプール主導で読み取られます。

述部の評価と行IDスプールの作成のために、c2の列パーティション コンテキストを使用して、列パーティション化されたテーブルまたは結合インデックスの最大m2個の列パーティションにアクセスする必要があります。この句が出現する場合、列パーティション化された表または結合インデックスは行パーティション化されていません。

kは、行IDスプールのスプール番号です。

m2 2。

2 < c2 < m2-1であり、使用できる列パーティション コンテキストの数と等しいか、それより1少ない数になります。

アクセス対象の列パーティションの1つが削除列パーティションである可能性があります。該当する行がない場合は、m2個の列パーティションの一部にはアクセスする必要がなくなります。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやJOIN、MERGEなどのAMPステップで使用されます。

using rowid Spool k (Last Use) built from n2 combined partitions (m2 column partitions)
  この句は、適格なテーブルまたは結合インデックス内の行の行IDを格納する行IDスプールkが作成され、列パーティション化されたテーブルまたは結合インデックスが、この行IDスプール主導で読み取られることを示します。

述部の評価と行IDスプールの作成のために、テーブルまたは結合インデックス(この場合、行パーティション化と列パーティション化の両方が行なわれている)の最大n2個の組み合わせパーティションの行と列にアクセスする必要があります。

kは、行IDスプールのスプール番号です。

m2個の列パーティションのそれぞれに使用できる列パーティションのコンテキストが存在します。

m2 2。

アクセス対象の列パーティションの1つが削除列パーティションである可能性があります。

該当する行がない場合は、m2個の列パーティションの一部にはアクセスする必要がなくなります。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやJOIN、MERGEなどのAMPステップで使用されます。

using rowid Spool k (Last Use) built from n2 combined partitions (m2 column partitions and c2 contexts)
  この句は、適格なテーブル内の行の行IDを格納する行IDスプールが作成されることを意味しています。列パーティション化されたテーブルが、この行IDスプール主導で読み取られます。これで、この行IDスプールの使用が終わるため、このスプールを削除できます。

kは、行IDスプールのスプール番号です。

述部の評価と行IDスプールの作成のために、行パーティション化と列パーティション化の両方が行なわれているテーブルまたは結合インデックスの最大n2個の組み合わせパーティションの行と列にアクセスする必要があります。

列パーティション化レベルごとに、c2個の列パーティション コンテキストが最大m2個の列パーティションにアクセスするために使用されます。

n2 sおよびm2 2

2 < c2 < m2-1であり、使用できる列パーティション コンテキストの数と等しいか、それより1少ない数になります。

アクセス対象の列パーティションの1つが削除列パーティションである可能性があります。該当する行がない場合は、m2個の列パーティションの一部にはアクセスする必要がなくなります。

この句は、列パーティション化されたソースを読み込む可能性のある、RETRIEVEやJOIN、MERGEなどのAMPステップで使用されます。

we compute the table-level summary statistics from spool n and save them into spool m
  この句は、Teradata Databaseがスプールnから収集された事前集約済みの統計情報を受け取り、そのデータからテーブル レベルのサマリー統計を計算して、計算したサマリー統計をスプールmに保存することを意味します。
we do a BMSMS... (bit map set manipulation step)
  BMSMS (ビット マップ セット操作ステップ)は、ゆるやかに選択的なセカンダリ インデックスをAND演算したものを処理するための1つの方法、NUSIビット マッピングです。

BMSMSは、次の行IDビット マップに共有部分を持ちます。

     1)   The bit map built for … by way of index #  n...
     2)   The bit map built for … by way of index #  n...
      …

結果のビットマップがスプールnに置かれます..。

     BMSMS...

2つ以上のビットマップがAND 演算によって交差することがわかったため、1つの大きなビットマップが形成される、ことを示しています。

     index #  n...

AND演算で使用される各非固有セカンダリ インデックスを、ANDで結合する順に識別します。

     resulting bit map is placed in Spool  n...

BMSMSにより作成される大きなビットマップが最終結果の作成に使用できるように格納される一時ファイルを特定します。

EXPLAINリクエスト修飾子: 例も参照してください。

we do a GEOSPATIAL COLLECT STATISTICS summary step …
  この句は、Teradata Databaseが、地理空間列でインデックス統計が収集される場合、SUMステップを使用して地理空間NUSI統計を集約することを示します。
we do an ABORT test …
  ABORTまたはROLLBACK文が検出されました。
we do [an all-AMPs | a single-AMP | a group-AMPs] DISPATCHER RETRIEVE step from Spool 2 (Last use) by way of an all-rows scan and send the rows back to the Dispatcher。
  この句は、Teradata Databaseが、全AMP、単一AMP、またはグループAMPの任意ののステップを使用してスプールから行を取得することを示します。複数のAMPから統合した行は、次にディスパッチャに送り返されます。このステップは、行ベース トリガーや非相関スカラーsubqueryなどの処理に使用されます。
we do [an all-AMPs | a single-AMP | a group-AMPs] FEEDBACK RETRIEVE step from Spool n (Last Use) of Spool nstatistics。
  この句は、Teradata Databaseが、全AMP、単一AMP、またはグループAMPの任意ののステップを使用して統計を取得することを示します。統計がスプール作成中に計算される場合、フィードバック取得ステップは、AMPローカル統計からの統計フィードバックを大域統計に統合し、それらを最適化ルーチンに送り返します。
we do [an all-AMPs | a single-AMP | a group-AMPs] FEEDBACK RETRIEVE step from n% of Spool n to collect statistics。
  この句は、スプールの生成中にTeradata Databaseが統計を生成するのは不可能だったため、統計はフィードバック取得ステップでサンプリングすることにより派生されたことを示します。
we do [an all-AMPs | a single-AMP | a group-AMPs] FEEDBACK RETRIEVE step from Spool n (Last use)。
  この句は、Teradata Database最適化ルーチンが結果のフィードバック ステップを生成したことを示します。
we do an all-AMPs SUM step in mapname to aggregate from database_name.table_name by way of an all-rows scan with no residual conditions, grouping by field1 (database_name.table_name.column_name_1)。
  この句は、Teradata Databaseが示されているマップ内の全AMP SUMステップを使用して、データベースまたはユーザーのdatabase_name内のテーブルまたは結合インデックスtable_nameの単一の列から統計情報を集約し、それをcolumn_name_1にグループ化することを意味します。
we do an all-AMPs SUM step in mapname to aggregate from database_name.table_name by way of an all-rows scan with no residual conditions, grouping by field1 (database_name.table_name.column_name_1, database_name.table_name.column_name_2)
  この句は、Teradata Databaseが示されているマップ内の全AMP SUMステップを使用して、データベースまたはユーザーのdatabase_name内のテーブルまたは結合インデックスtable_nameから統計情報を集約し、それを(column_name_1, column_name_2)にグループ化することを意味します。

この場合、column_name_1とcolumn_name_2の固有性が極めて低くなります。その理由は、これらの2つの行に対する事前集約のために、最適化ルーチンがコストベースの決定を行ない、その結果をそれぞれの列に収集するためです。この最適化によって、基本テーブルの読み取りが1回だけになり、それぞれの列に対する集約は事前集約されたデータに対する操作になるため実行速度が速くなります。

この最適化は、統計の再収集にのみ使用されます。また、適用可能な統計が単一のCOLLECT STATISTICSリクエストに指定されている場合にのみ、この最適化が可能になります。

we do an all-AMPs SUM step in mapname to aggregate from database_name.table_name by way of a traversal of index # n without accessing the base table with no residual conditions, grouping by field1 (database_name.table_name.column_name_1, database_name.table_name.column_name_2)。
  この句は、Teradata Databaseが示されているマップ内の全AMP SUMステップを使用して、データベースまたはユーザーのdatabase_name内のテーブルまたは結合インデックスtable_nameの複数の列から統計情報を集約し、それをcolumn_name_1にグループ化することを意味します。

これに該当する場合、単一列統計がcolumn_name_1column_name_2について収集され、複数列統計が(column_name_1, column_name_2)について収集されます。

複数列の場合の集約が最初に実行されます。この集約の結果は、column_name_1とcolumn_name_2に対する個別の統計にいての統計を収集するために使用されます。この方法によって、基本テーブルの読み取りが1回だけになり、それぞれの列に対する集約は事前集約されたデータに対する操作になるため実行速度が速くなります。

この最適化は、3つの統計のすべてが、単一のCOLLECT STATISTICSリクエスト内に指定されている場合にのみ可能になります。

we do a SMS (set manipulation step) …
  UNION、EXCEPT、MINUS、またはINTERSECT演算子の制御下で行を組み合わせます。
we lock a distinct [databasename.]”pseudo table” for [locking_severity] on a RowHash for deadlock prevention
  この句は、DDL処理用のディクショナリ テーブルのプライマリおよびフォールバックRowHashロックをシリアル化するために使用される擬似ロックを示します。詳細は、擬似テーブル ロックを参照してください。
we lock [databasename.]tablename for exclusive use on a reserved RowHash to prevent global deadlock
  この句は、これに続くロック句のdatabasename.tablenameのEXCLUSIVEロックをシリアル化するプロキシ ロックを意味します。
we lock [databasename.]tablename for [lock_severity]

we lock [databasename.]tablename for [lock_severity] on a single partition

we lock [databasename.]tablename for [lock_severity] on npartitions

  ロック マネージャは、database_name.table_nameにEXCLUSIVEロックを設定します。最後の句は、DBC.AccessRightsディクショナリ テーブルでDDL処理が発生している場合にのみ発生します。
we lock [databasename.]tablename for [locking_severity] on a [locking_level] for deadlock prevention
  ロック マネージャは、databasename.tablenameの指定されたロック レベルにある、指定されたロック重大度に対してロックを設定します。
[locking_level]は、次のいずれかのレベルになります。
  • 予約済みRowHash
  • 単一パーティションの予約済みRowHash
  • nパーティションの予約済みRowHash
  • 全パーティションの予約済みRowHash

最初のレベルは非行パーティション テーブルに使用され、レベル2から4は行パーティション テーブルに使用されます。

we lock [databasename.]tablename for single writer on a reserved RowHash to prevent global deadlock

we lock [databasename.]tablename for single writer on a reserved RowHash in all partitions to prevent global deadlock

we lock [databasename.]tablename for single writer

we lock [databasename.]tablename for single writer on a reserved RowHash in all partitions to serialize concurrent updates on the partition-locked table to prevent global deadlock

we lock [databasename.]tablename for single writer to serialize concurrent updates on the partition-locked table

  最初の句は、非行パーティション テーブルに使用されるプロキシ ロックを示します。

2つ目の句は、行パーティション テーブルに使用されるプロキシ ロックを示します。

最初および2つ目の句は両方とも、3つ目の句のプロキシ ロックのためのシリアル化ロックを示します。テーブル レベル単一WRITEロックでは、行ハッシュWRITEロックされていないデータで同時読み取りを行なうことができます。

4つ目の句は、5つめの句の全AMP単一WRITEロックをシリアル化するために使用されるプロキシ ロックを示します。このタイプの単一WRITEロックは、ターゲット テーブルでNUSI、USI、またはRIメンテナンスが必要な、パーティション ロック バルクDMLの特定のケースに使用されます。

5つ目の句は、バルクDML処理中にWRITEロックされていないテーブルのデータで同時読み取りを行なうことができる単一WRITEロックを示します。

we save the UPDATED STATISTICS for ('a,b') from Spool m into Spool n, which is built locally on a single AMP in mapname derived from the hash of the table id. Statistics are collected since the age of the statistics (y days) exceeds the time threshold of x days and the estimated data change of z% exceeds the system-determined change threshold of zx%。
  ユーザー指定の時間しきい値と指定のシステム変更しきい値の両方が満たされたので、要求された統計をTeradata Databaseが再収集します。
we save the UPDATED STATISTICS for ('a,b') from Spool m into Spool n, which is built locally on a single AMP in mapname derived from the hash of the table id. Statistics are collected since the estimated update of z% exceeds the system-determined update threshold of x%。
  システム判別の変更しきい値が満たされ、最後に統計の再収集が行なわれて以降に対象列が更新されたため、要求された統計をTeradata Databaseが再収集します。
we save the UPDATED STATISTICS for ('a,b') from Spool m into Spool n, which is built locally on a single AMP in mapname derived from the hash of the table id. Statistics collected since the estimated data change could not be determined。
  最適化ルーチンが、関連する列におけるカーディナリティの変更と更新のアクティビティを見積もることができなかったため、Teradata Databaseでは要求された統計を再収集しません。
これが生じるのは、最適化ルーチンが以下の4つの条件のいずれかを検出した場合です。
  • UDIカウントが、動的AMPサンプリングまたは信頼できる傾向と整合しないため信頼できない。
  • ターゲット テーブルが小さく、集約にかかる推定時間が0.5秒未満である。
  • 主要な統計の変更に関する、信頼できる傾向がない。
  • 最後に収集されたサンプル統計が、傾向に基づいて見積もられた統計と合っていない。
we save the UPDATED GEOSPATIAL STATISTICS for column from Spool m (Last Use) into Spool n
  Teradata Databaseは、columnに関してローカルに収集された更新済み地理空間NUSI統計をスプールmからスプールnにコピーします。
We send an END PLAN FRAGMENT step for plan fragment n
  この句は、動的計画内の計画フラグメントの末尾をディスパッチャすることを意味します。このステップは、最後以外の動的計画の各計画フラグメントの末尾で発生します。このステップはAMPに送信されません。

nは、計画フラグメントの数を示します。計画フラグメントの先頭を示す、計画内のステップはありません。

動的計画の場合、最初のステップは最初の計画フラグメントの先頭になります。END PLAN FRAGMENTステップの後の最初のステップは、次の計画フラグメントの先頭になります。動的計画の最後のステップは、最後の計画フラグメントの末尾になり、最後の計画フラグメントのEND PLAN FRAGMENTステップはありません。計画内の計画フラグメントの数および最後の計画フラグメントの数は、最後のEND PLAN FRAGMENTステップの数に1を加えた数になります。

We SKIP collecting STATISTICS for (‘a,b’), because the age of the statistics (n days) does not exceed the user-specified time threshold of m days and the estimate data change of o% does not exceed the user-specified change threshold of p%。
  ユーザー指定の時間しきい値とシステム判別の変更しきい値が有効です。いずれのしきい値も満たされないため、Teradata Databaseは指定した統計情報の再収集を行ないません。
We SKIP collecting STATISTICS for ('a,b'), because the estimated data change of 5% does not exceed the user-specified change threshold of 20%。
  ユーザー指定のデータ変更しきい値を統計が満たさなかったので、Teradata Databaseは指定の統計を再収集しません。
which is duplicated on all AMPs in mapname
  結合のための準備でのデータの再配置。
which is redistributed by hash code to all AMPs in mapname
  結合のための準備でのハッシュ コードによるデータの再配置。
which is redistributed by the hash code of ([database_name.]table_name.column_expression)

which is redistributed by the hash code of ([database_name.]table_name.column_expression) to few AMPs in mapname

which is redistributed by the hash code of ([database_name.]table_name.column_expression) to few or all AMPs in mapname

which is redistributed by the hash code of ([database_name.]table_name.column_expression) to all AMPs in mapname

  結合に備えて、table_nameからの行セットに基づく指定列式のハッシュ コードによるデータの再配置。
which is redistributed randomly …
  INSERT … SELECTリクエストにHASH BY RANDOMを指定すると、最適化ルーチンは選択した行のブロックをランダムに再配置してから、LOCAL ORDER BY句を指定することで、それらのブロックをローカルでオプションに順序付けして、ローカルに行をターゲット テーブルに挿入します。これを実行するために、最適化ルーチンは、生成された応答スプールを受け取り、そのスプールにランダムなハッシュ値を生成し、既存の行ハッシュ値を変更してから行を再配置します。これは、SELECT操作の結果では均等分散が得られなかった場合に役立ちます。