オブジェクト使用カウント キャッシュについて
オブジェクト使用カウント キャッシュ(OUCキャッシュ)は、データベースに対して行なわれたDMLリクエストのオブジェクト アクセス使用カウント、UDI(UPDATE、DELETE、INSERT)カウント、統計アクセス カウントを追跡します。
- 問合わせの最適化
- パフォーマンスのモニター
- データベース オブジェクトの最適化
- 統計の管理
カーディナリティの見積もりに必要なのはテーブル レベルの挿入と削除のUDIカウントだけなので、Vantageはその情報をOUCキャッシュに記録します。列レベルの更新カウントが必要となるのは、1つ以上のUSINGしきい値を満たすことができなかったためにCOLLECT STATISTICSリクエストをスキップできるかどうかを最適化ルーチンが判別する場合のみです。この場合、列レベルの更新カウントは必要となる場合にだけ取得されます。
VantageがOUCキャッシュをフラッシュする際、データがディクショナリ テーブルDBC.ObjectUsageに書き込まれます。ObjectUsageテーブルの定義については、<Teradata Vantage™ - データ ディクショナリ、B035-1092>を参照してください。
- テーブル
- ビュー
- マクロ
- トリガー
- 結合インデックス
- ハッシュ インデックス
- 統計
- 削除
- 挿入
- 更新
ディスクへのOUCキャッシュのフラッシュ
- 特定のユーザー定義の時間間隔値に達した場合。DBS制御フィールドObjectUseCountCollectRateを使用すると、時間ベースのフラッシュ間隔を指定できます。Vantageは、次の任意ののイベントが初めて発生するとOUCキャッシュをフラッシュします。
- キャッシュを最後にフラッシュしてから、指定の時間が経過した。
- キャッシュが満杯になった。
ObjectUseCountCollectRateフィールドについて詳しくは、 <ユーティリティ>を参照してください。
- 一連のデータベース オブジェクトで、大量のアクティビティが生じた場合。
DBC.ObjectUsageに古いカウントが累積しないようにするためには、アクティビティ数が多い場合にキャッシュをフラッシュすることが必要になります。統計を再収集するタイミングを判別するためには、最新の状態にある使用カウントが重要になります。
アクティビティ数が多い場合のキャッシュのフラッシュが特に役立つのは、テーブル カーディナリティが短期間に完全に変更される可能性があるバルクロード ジョブの後です。例えば、FastLoadジョブおよびMultiLoadジョブが完了した直後にOUCキャッシュをフラッシュします。
- 最適化ルーチンがキャッシュをフラッシュするための特定リクエストを作成した場合。
これは、オンデマンド フラッシュと呼ばれます。