保存したワークロードでチューニング アドバイザーを実行しました。推奨事項には、多数の統計の作成といくつかのインデックスの作成が含まれています。インデックスによってパフォーマンスが向上することはわかっていますが、統計の収集によってパフォーマンスがどのように向上するのか説明できる方はいますか。
答え1
非常に高レベルでは、SQL Server のクエリ オプティマイザーがステートメントを実行するための最適な方法を決定できるように、統計が保持されます。実行プランは各操作に対して生成され、統計はタスクを完了するために使用する最も効率的な実行プランを決定するのに役立ちます。
このトピックに関する情報は山ほどあります。ただし、チューニングの提案を実装する前に、それが何を行うのかを完全に理解しておく必要があります。たとえば、インデックスを追加すれば必ずパフォーマンスが向上するとは限りません。マイナスの影響が出ることもあります。ただし、統計を最新の状態に保つことは非常に重要です。
これは、SQL 2008 でクエリ オプティマイザーが使用する統計について説明している MSDN の記事です。
Microsoft SQL Server 2008 のクエリ オプティマイザーで使用される統計
以下の専門家の意見も読むことをお勧めします。
- ポール・ランドール
- グラント・フリッチェイ
- ブレント・オザー(および会社)
答え2
SQLサーバーチューニング アドバイザーは、Microsoft SQL Server システム専用に設計されたツールで、さまざまな方法でデータベースをチューニングできます。個人または企業のニーズに応じて、オンラインとオフラインの両方のチューニング アプリケーションで使用できます。インデックスなどのさまざまな要素をチューニングすることで、検索の全体的なパフォーマンスを大幅に向上させることができます。また、パーティションやインデックスを作成または削除し、これらの種類の要素を可能な限り高速になるように変更することで、SQL Server を最適化するためにも使用できます。
統計情報を収集すると、さまざまな理由から、SQL Server チューニング アドバイザーによるパフォーマンスが向上します。これらの統計自体は、データと値がテーブルの列全体またはインデックス付きビューに分散される方法に関する情報で構成されるオブジェクトです。必要な統計が収集されると、SQL Server チューニング アドバイザーはその情報を使用して、特定のクエリの結果の行数を推定します。この推定は「カーディナリティ推定」と呼ばれ、この情報により、アプリケーションは高品質のクエリ プランを作成できます。これにより、従来のクエリ実行方法に比べてパフォーマンスが大幅に向上します。
SQL Server チューニング アドバイザーを使用して SQL Server のパフォーマンスを向上させることは、インデックス作成を許可することで Microsoft Windows オペレーティング システムの「検索」機能を向上させることと概念的に似ています。SQL Server チューニング アドバイザーが統計を使用してクエリ結果がどのようになるかを予測できる場合、統計がまったく存在しない場合よりも速く結果を生成できます。クエリ結果が高速化されると、全体的に作業環境がスムーズになります。