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