17.05 - DUMP EXPLAIN - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)

問合わせの最適化ルーチン計画情報をキャプチャして、一連のINSERTリクエストを含むスクリプトの形式で要求元に返します。

インデックス分析の詳細は、以下を参照してください。
  • Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144のBEGIN QUERY LOGGINGとREPLACE QUERY LOGGINGを参照してください。
  • COLLECT DEMOGRAPHICS
  • COLLECT STATISTICS(QCD形式)
  • INITIATE INDEX ANALYSIS
  • INSERT EXPLAIN
  • RESTART INDEX ANALYSIS
  • Teradata Vantage™ - SQLリクエストおよびトランザクション処理、B035-1142
  • Teradata Vantage™ - データベースの設計、B035-1094
  • Teradata® Index Wizardユーザー ガイド、B035-2506
  • Teradata® Viewpointユーザー ガイド、B035-2206、統計マネージャーのトピック
  • Teradata® Visual Explainユーザー ガイド、B035-2504
  • Teradata® System Emulation Toolユーザー ガイド、B035-2492

ANSI準拠

DUMP EXPLAINは、ANSI SQL:2011規格に対するTeradataの拡張機能です。

必要な権限

指定された問合わせキャプチャ データベースのすべてのテーブルに対するINSERT権限が必要です。

呼び出し

通常は、クライアント ベースのデータベース問合わせ分析ツールを使用して呼び出されます。

既存のQCDなしのDUMP EXPLAINのアクション

DUMP EXPLAINによって作成されるスクリプトを初めて実行する前に、テスト システム上に既存のQCD_nameデータベースが存在していることを確認してください。Visual Explainツールのコントロール センター機能を使用して、QCDデータベースを作成することができます。

DUMP EXPLAINによって作成されるスクリプトを実行するときに、QCD_nameデータベースまたはそのテーブルのいずれか1つでも存在しない場合、あるいは1つ以上のQCD_nameデータベース テーブルに対するINSERT権限がない場合は、適切なエラー メッセージが表示され、スクリプトの実行が終了します。

DUMP EXPLAINで実行されるアクション

DUMP EXPLAINは、以下の動作を示されている順序で実行します。

  1. SQL_statementによって指定されたSQL DMLリクエストに対してEXPLAINを実行する。
  2. EXPLAINから最適化ルーチン計画出力をキャプチャする。
  3. ユーザー指定の問合わせキャプチャ データベースの適切なテーブルを更新するように設計された一連のINSERTリクエストを含むスクリプトとして出力を返す。

いくつかの異なるマシンから情報を収集していて、適切なマシン上の選択したQCDだけの結果の更新を確認する場合、またはワークロードの大きい期間にQCDを更新しない場合は、INSERT EXPLAINではなくDUMP EXPLAINを使用することができます。この場合は、ワークロードの小さい期間にDUMPリクエストをバッチ ジョブの一部として実行できます。

DUMP EXPLAINは、複文リクエスト内では無効

マルチ ステートメント リクエストの一部としてDUMP EXPLAINリクエストを実行することはできませんが、マルチ ステートメント リクエストに対してDUMP EXPLAINリクエストを実行することはできます。

DUMP EXPLAINリクエストを含むマルチ ステートメント リクエストを実行しようとすると、そのマルチ ステートメント リクエストはアボートされ、エラーが返されます。

次の例で示すDUMP EXPLAINリクエストは、マルチ ステートメント リクエストで有効な文のように見えます。事実、このリクエストによってDUMP EXPLAINに続くマルチ ステートメント リクエストのクエリー計画がキャプチャされます。つまり、このDUMP EXPLAINリクエストは、マルチ ステートメント リクエストの一部ではないということになります。その結果、このリクエストは他のDUMP EXPLAINと同様に扱われ、正常に完了します。

     DUMP EXPLAIN INTO qcd SELECT * FROM d1.t1
     ;SELECT * FROM d1.t1;

       *** Insert completed. One row added.
       *** Total elapsed time was 1 second.

DUMP EXPLAINは、XML出力のキャプチャをサポートしない

INSERT EXPLAINおよびEXPLAINリクエスト修飾子とは異なり、DUMP EXPLAIN文では、XMLドキュメントの問合わせ計画のキャプチャをサポートしてない

DUMP EXPLAINの結果に対するリクエスト キャッシュ参照の効果

データ パーセルがDUMP EXPLAINリクエストとともに実行されると、計画が参照済みUSINGとCURRENT_DATEやDATE値、または両方の値で生成されることがあります。これらの値が検査される場合、問合わせ計画によってこれらが示されます。

データ パーセルがDUMP EXPLAINリクエストとともに実行されない場合、結果の計画がUSING、CURRENT_DATEやDATE値を参照しないで生成されます。つまり定義による全般計画です。Visual Explain、Teradata System Emulation Tool、Teradata Index Wizardは、DUMP EXPLAINリクエストを使用してクエリー計画の取得中に入力としてUSINGデータを受け付けません。ただし、リクエストがBTEQまたはTeradata SQL Assistantを使用して実行された場合は除きます。

Teradata Index Wizardは内部でワークロード問合わせの計画を生成し、最適なインデックス推奨事項を決定するためのワークロードのコストを見積もります。ワークロードの問合わせによってUSINGリクエスト修飾子が指定される場合、計画はUSING値、CURRENT_DATE値、またはDATE値で検査されずに生成されます。これらの要因から、リクエスト キャッシュ参照は、結果のインデックスに影響を及ぼしません。ワークロード分析がUSING値と無関係である場合、この動作は正しく実行されます。