リクエスト キャッシュの除去について
キャッシュ内の計画はシステムが廃棄するまで、つまり有効でなくなるまで、リクエスト キャッシュ内に残ります。例えば、DDL変更はデータベース スキーマを変更します。また、以前有効だった計画を無効にすることができます。
変更されたデータベース オブジェクトを参照するキャッシュされたリクエストのみがパージされます。
キャッシュに関する計画が、解釈された日付値に特有であり、その値がDATE、CURRENT_DATE、またはTEMPORAL_DATE組み込み関数によって返される日付に一致しない場合も除去されます。場合によっては、TEMPORAL_TIMESTAMP組み込み関数値も除去されます。
免除リクエストと非免除リクエストの除去
免除リクエストとは、たとえテーブルのデモグラフィックが変更されても、絶えず同じように最適化されるリクエストのことです(テーブルのデモグラフィックが各キャッシュ除去の間に更新されることがあると仮定して)。
免除されたリクエストは、空き領域が必要になるか、またはシステムが再始動されるまで、リクエスト キャッシュの中に残っています。免除リクエストには、デモグラフィックの変更と無関係のプライマリ インデックス リクエスト、USIを使用する特定のタイプのリクエスト、特定のタイプの入れ子結合があります。
免除対象としてマークされていないキャッシュ内のリクエストは、すべて定期的に除去されます。すべてのリクエストが同時に除去されないようにするために、除去する時間がPEごとに異なります。
リクエスト キャッシュ全体の除去
リクエスト キャッシュ内の最大可能登録項数は、パフォーマンス グループ内のDBS制御MaxRequestsSavedフィールドの設定に応じて変化します。 MaxRequestsSavedフィールドの詳細については、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。
リクエスト キャッシュの登録項が一杯になると、構文解析プログラムは長時間未使用(least-recently-used)アルゴリズムを使用して、キャッシュ管理構造体から削除するリクエストを決定します。データ構造体から登録項が除去されると、キャッシュ内の該当するリクエストも削除されます。
統計情報に依存する個々のリクエスト キャッシュ登録項の除去
アクセスまたは結合計画が統計情報に依存する登録項はすべて、リクエスト キャッシュから定期的に除去されます。アクセスで固有インデックスのみを使用する登録項は定期的には除去されません。
- キャッシュが満杯になり、新しい登録項を入れるための空き領域が必要な場合。
- キャッシュされたリクエストにより指定されているテーブルに対して、データ定義リクエスト(ALTER TABLEリクエストなど)が実行依頼された場合。