17.00 - 17.05 - ディスパッチャ - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
ユーザー ガイド
Publication ID
B035-1142-170K-JPN
Language
日本語 (日本)

ディスパッチャ

ディスパッチャは、リクエストおよび動的計画フラグメントの実行および応答制御を操作し、トランザクションおよびリクエスト アボート、キュー テーブル キャッシュを管理します。

ディスパッチャには次のプライマリ機能があります。
  • TASMルールを適用し、ワークロードに分類する。
  • AMPステップを適切なAMPにルーティングする。
  • 結果または統計のフィードバックを最適化ルーチンに返し、動的計画を実行するときに最適化ルーチンが次の計画フラグメントを生成できるようにする。
  • リクエストの結果を、そのリクエストを実行依頼したユーザー アプリケーションに返す。
  • アボートされたトランザクションおよびリクエストをクライアント アプリケーションとTeradataプラットフォーム プロセッサに通知する。

実行制御

実行制御とは、コンクリート ステップを処理するディスパッチャです。

ディスパッチャは、リクエストの計画にあるコンクリート ステップを、処理のために適切なAMPに経路指定します。コンクリート ステップがBYNET上に置かれると、AMPステップとして参照されます。

ディスパッチャの経路指定機能には、ステップを順序どおりに実行することも含まれています。新しいステップは、前のステップが作業を完了するまでディスパッチされることはありません。ステップの作業が完了すると、影響を受けたAMPは完了応答を送信します。

Teradata Databaseは、前のステップがタスクのロックを獲得していも、その作業を完了していない場合には並列ステップをディスパッチできます。これは、影響を受けるAMPからの応答によって通知され、ディスパッチャは別の並列ステップを送信できるかどうかを判断します。

AMPステップが、1つのAMP、複数のAMP、またはすべてのAMPに送られる(それぞれ、2地点間、マルチキャスト、ブロードキャストという)かどうかは、リクエストの性質によって決まります。

実行の制御は、個々のAMPのステータス レポートを監視することもします。これは、AMPがディスパッチャによって送られたステップを処理し、AMPがそれぞれのステップを完了したら結果を応答制御機能に転送する際に行なわれます。

応答制御

応答制御とは、結果を処理するディスパッチャです。ディスパッチャの2番目に重要な機能は、リクエストの結果(変換された結果のこともある)を要求元のアプリケーションに返すことです。

トランザクションおよびリクエストのアボートの管理

ディスパッチャは、トランザクションを監視してデッドロックがないか調べます。デッドロックが発生するとディスパッチャはデッドロックを解決します。つまり、ロックされたリソースを一貫して管理し、利用可能な最適な方法でデッドロックを解決します。このため、多くの場合は、組になったデッドロック トランザクションの一方がアボートされます。

ディスパッチャは、クライアント アプリケーションと影響を受けるすべてのTeradataプラットフォーム仮想プロセッサに通知を出して、リクエストおよびトランザクションのアボートを処理します。

トランザクションおよびリクエストが正常にあるいは異常な方法でアボートする理由は、いくつかあります。正常なアボートは、通常は以下の処置によって引き起こされます。
  • TDPログオフ コマンド
  • クライアント アプリケーションの正常な終了
異常なアボートは、通常は以下の処置によって引き起こされます。
  • リクエストの構文エラーおよび意味エラー
  • 構文解析プログラムの内部エラー(メモリのオーバーフローなど)
  • AMPの内部エラー(プライマリ インデックスの競合など)
  • トランザクションのデッドロック

キュー テーブルFIFOキャッシュの管理

ディスパッチャは、各キュー テーブルの消費されていない行の行情報を保持するキャッシュを維持します。このキュー テーブル キャッシュは、システムの起動時にシステムによって作成されます。システム内の各PEに、キュー テーブル キャッシュのタスクが存在することがあります。

特定のPEにおけるキュー テーブルFIFOキャッシュ行の登録項は、そのPEにハッシュするすべてのキュー テーブルで共有されます。各キュー テーブルの行項目は、キューから消費されてQITS値の順にソートされる各行のQITSとrowID値の対です。

システムは起動時に各PEのキュー テーブル キャッシュに64 KBを割り振り、必要に応じてそのサイズを64 KB単位で動的に増分します(PEあたり最大1 MBまで)。システムは起動時に、キャッシュ内のすべてのフィールドを初期化して、100のテーブル項目のための領域を割り振ります。キュー テーブルがアクティブ化されると、最も小さな番号のスロットから開始して大きな番号のスロットへと、これらのスロットに値を取り込みます。キャッシュ サイズの最大値に到達すると、システムはキャッシュ内に挿入する必要のあるバイト数に応じて、その一部または全部をフラッシュします。

キュー テーブルFIFOキャッシュとその操作についての詳細は、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE TABLE (キュー テーブル形式)」を参照してください。