リテラルの動的パラメータ化(DPL)は、WHERE句およびON句の述部で使用される対象のリテラルのみが異なる、繰り返しのパラメータ化されていないリクエストの解析時間を短縮します。対象となるパラメータ化されていないリクエストは、これらのリテラルのパラメータ化後に同一のリクエストとして扱われます。リテラルは、パラメータのデータ値として使用されます。
DPLが適用された計画は、関連付けられた、動的にパラメータ化されたリクエスト テキストでキャッシュします。後で、パラメータ化されていないリクエストが異なるリテラル値を使用して送信され、このリクエストの動的にパラメータ化されたフォームがキャッシュ済みのパラメータ化されたリクエストと一致する場合、リクエスト キャッシュからのパラメータ化されたリクエストの保存した計画が使用されます。これにより、リクエストを再解析して計画を再生成する必要がなくなります。
パーサーは、対象となるパラメータ化されていないリクエストが最初に発生したときにDPLを適用せずに計画を生成した後、(DPL適用後の最初のリクエストに一致する)別のリクエストが2回目に見られた場合、DPLが適用された計画を作成します。これにより、リクエスト キャッシュ ロジックは、計画のパフォーマンスを比較し、DPLが適用されたキャッシュされた計画の使用を継続するかどうかを決定したり、パフォーマンスを向上させる計画によって、DPLなしの通常の計画の使用に戻します。DPLを有効にすると、ほとんどのワークロードのパフォーマンスが向上します。
リクエストがパラメータ化されている、パラメータ化されていない、または動的にパラメータ化されているかどうかにかかわらず、計画をキャッシュするまたはキャッシュしないという決定は、リクエスト キャッシュ ロジックによって自動的に制御されます。
DPLロジックでは、パラメータ化されていないSELECT文を持つ単一文リクエストのみが考慮されます。このようなリクエストがDPLの対象であるかどうか、およびリクエスト内のリテラルがパラメータ化の対象であるかどうかが自動的に決定されます。
DPLはデフォルトで無効になっています。DBS制御一般フィールドEnableDynamicParameterizationは、DPLを有効にするかどうかを制御します。 DBS制御の詳細については、Teradata Vantage™ - データベース ユーティリティ、B035-1102を参照してください。
DPLのDBQLロギング
CacheFlag | 目的 |
---|---|
D | リクエスト キャッシュからの汎用計画は、リクエストの実行に使用されます。 |
P | リクエストは、リテラル値(特定計画)をピーク操作して計画を生成するために解析されます。 |
N | リクエストが解析され、リテラル値(汎用計画)をピーク操作しないで計画を生成します。 |
I | パラメータ化されたリクエスト キャッシュ ロジックは、特定計画が常に優れていて、このリクエストはリテラルの動的パラメータ化(DPL)には適さないとしています。 |