ダウングレード アプローチを使用して、サンプリングに切り替えるタイミングを決定するために、システム設定のサンプリング パーセンテージを指定できます。最適化ルーチンでは、インテリジェントにサンプリングし、使用するサンプリングのパーセンテージ(最大は完全統計)を調整すると同時に、収集した統計の品質を維持します。
ダウングレード アプローチの仕組みは以下のとおりです。
- サンプル統計を収集するためのリクエストを初めて送信すると、最適化ルーチンでは、完全統計を収集します。つまり、統計はサンプリングされません。
最適化ルーチンでは、完全統計に基づいて、サンプリングをより少ないパーセンテージにするタイミングを決定します。
- それ以降に統計の再収集リクエストを送信すると、最適化ルーチンは、信頼できる履歴データを提供するのに十分な統計がキャプチャされるまでは、完全統計を収集します。
- 最適化ルーチンは、統計履歴を使用して、列データにばらつきがあるかどうか、列がローリングか静的か、などを認識できます。
最適化ルーチンは、DBC.StatsTbl.UsageTypeに保持されている列使用データ(詳細バケットまたはサマリー データのみ)およびユーザー指定の間隔数を考慮し、収集を削減して完全統計からサンプル統計にする適切なタイミングを決定します。
データベースは、サマリー データが頻繁に使用され、詳細な間隔データが使用されないヒストグラムに対しては、より積極的にサンプル統計のパーセンテージを削減します。
- 最適化ルーチンは、統計の再収集に使用する最適なサンプリング パーセンテージを決定し、列の履歴と性質に基づき、スケーリングに使用する適切な式を決定します。詳細については、Teradata Vantage™- SQLリクエストおよびトランザクション処理、B035-1142を参照してください。
- 最後に、最適化ルーチンは、再収集した統計と履歴データの統計の質を比較します。
最適化ルーチンがサンプリング パーセンテージを低くするのは、より少ないサンプリング パーセンテージで高い品質を確保できる場合のみです。
サンプリング パーセンテージを自動的に削減する機能によって、サンプル統計を収集できる列と完全統計を収集する必要がある列をユーザーが判断する必要性が軽減されます。最適化ルーチンは、最初に完全統計を収集することによって、それ以降の統計の再収集におけるサンプリングの量について、インテリジェントに判断するのに必要な情報を取得します。
小さなテーブル、ばらつきのある列、パーティション式に含まれる列、詳細なヒストグラム バケットが必要な列については、最適化ルーチンは常に完全統計を収集します。
最適化ルーチンでは、完全統計を使用して共通点の多い列を検出し、それ以降の再収集では、100%を大幅に下回るパーセンテージでのサンプル統計にインテリジェントに切り替えます。例えば、最適化ルーチンは、テーブルの行の2%のみをサンプリングし、非固有の列には適切なスケーリング式を適用して、推定による完全統計を取得します。これにより、完全統計を収集するよりもはるかに高速に、高品質の統計を取得できます。
完全統計の収集で検出されたローリング列、固有の列、およびほぼ固有の列については、最適化ルーチンは、それ以降はより低いパーセンテージでサンプル統計を収集し、線形のスケーリング式を適用して、外挿による完全統計を生成できます。
最適化ルーチンは、デモグラフィック パターンや変更カウントに応じてサンプル統計を何回か収集した後、完全統計を再収集して検証し、必要に応じて現在のサンプリング パーセンテージや推定手法を調整できます。