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
日本語 (日本)

リクエスト キャッシュには、正常に構文解析された特定のカテゴリのSQLリクエストと、そのリクエストのプラスチック ステップを格納して再利用できるようにします。これにより、同一のSQLリクエストを何度も構文解析する必要がなくなります。リクエスト キャッシュはPEローカル メモリ内バッファであり、このバッファの中に、DML(データ操作言語)リクエストの構文解析時に生成されたステップが格納されます。

リクエスト キャッシュは、異なるデータ値で同じSQLリクエストを繰り返し発行する更新用のバッチ プログラムに特に有効です。これは、特定のセッション中に実行依頼されたリクエストはすべて同じPEを経由し、同じリクエスト キャッシュにアクセスするためです。

リクエスト キャッシュは、同じアプリケーション プログラムを使用する複数のユーザーが同じDMLリクエストを入力するようなトランザクション処理環境でも役立ちます。

Teradata Databaseの起動中にリクエスト キャッシュが初期化されると、パフォーマンス グループ内のDBS制御フィールドのMaxRequestsSavedにはキャッシュ エントリの数が設定されます。

即時キャッシングと非即時キャッシング

すべてのリクエストがキャッシュされるとは限らず、またキャッシュされるリクエストのすべてが直ちにキャッシュされるとも限らないことに注意してください。

リクエストにデータ パーセルがある場合(USINGリクエスト修飾子によってTeradata SQLに指定される)、システムは、汎用プランを使用して直ちにそれをキャッシュするか、または特定のプランを使用することを決定する場合があります。ここでは、データ パーセルという用語は常にデータ パーセル セットを指します。繰り返しリクエストは複数のデータ パーセルと関連付けられますが、非繰り返しリクエストが関連付けられるデータ パーセルは1つのみです。また、リクエストがどのデータ パーセルにも関連付けられないこともあります。

リクエストの計画を確認する前に、パラメータ化した値を表出することにより、最初にこれらの値にピーク処理を設定しないで生成した場合より、一部のカテゴリの特定リクエストに対して最適な計画を生成することができます。パラメータ化という用語は、USINGの代わりに使用されます。これは、USINGリクエスト修飾子を指定しないとデータとDataInfoの両方のパーセルをリクエストと一緒に送信することが可能であり、USINGリクエスト修飾子を指定するとDataInfoパーセルなしでデータ パーセルのみ送信することが可能であるためです。データ パーセルおよびDataInfoパーセルについては、<Teradata® CLI V2メインフレーム接続システム、B035-2417>と<Teradata® CLI V2ワークステーション接続システム、B035-2418>を参照してください。

結果は、例えば、最適化ルーチンが値の述部を検討するリクエストにおいて、すべての箇所にUSING変数の代わりに定数を指定した場合に得られる内容と同じになります。これがどのように行なわれるかの詳細は、パラメータ化されたリクエストを参照してください。

次の例に、データ パーセルを含んだリクエストを生成するSQL文を示します。

    USING (a INTEGER, b INTEGER, c SMALLINT)
    INSERT INTO tablex VALUES (:a, :b, :c);
    USING (d SMALLINT, e INTEGER)
    EXEC macroy (:d, :e);

これらのリクエストがデータ駆動型繰り返しリクエストの一部として実行依頼された場合は、複数のデータ パーセルが関係します(繰り返しリクエストの詳細は、<Teradata® CLI V2メインフレーム接続システム、B035-2417>または<Teradata® CLI V2ワークステーション接続システム、B035-2418>を参照)。

USINGリクエスト修飾子を指定しないマクロ実行にはデータ パーセルがないため、システムはそのマクロをすぐにキャッシュしません。次のマクロにはUSINGリクエスト修飾子が含まれていないため、データ パーセルも含まれていません。

    EXEC macroz (100, 200, 300);

構文解析プログラムは、実行時に与えられたリクエスト テキスト内のマクロ パラメータ値を、データ パーセルの一部ではなく、リクエスト パーセルの一部とみなします。

リクエストにデータ パーセルが含まれていない場合、そのプラスチック ステップは直ちにはキャッシュされません。その場合には、そのリクエストのテキストから得られたハッシュ値が、キャッシュ管理データ構造体内の初出の登録項の1つに格納されます。

同じリクエストが2回目にパーサーに送信された場合、そのリクエストはリテラルの動的パラメータ化(DPL)に対して考慮されます。システムは、プラスチック ステップで、最初に見た領域からキャッシュ エントリの1つにエントリを移動することがあります。場合によっては、リクエストが3回目に表示されるまで、計画はキャッシュされません。DPLの詳細については、動的にパラメータ化されたリクエストを参照してください。