2012-05-03 8 views
2

私はSQL Server 2008を使用しています。sprocを実行して実行計画を含めると、インデックスが「不足している」とアラートが表示され、 sprocのパフォーマンスを向上させます。自動テストのベンチマークSQL Server実行計画?

少なくとも私の自動テストでは、よりパフォーマンスの高いsprocsをいくつか実行してからXMLに実行計画を組み込むことが理にかなっていると思います。次に、XML計画を解析して、SQL Serverによって警告された警告またはアラートを解析します。いずれかが発生した場合、これはテストの失敗とみなされます。前回実行してからクエリのコストが大幅に増加した場合は、それをさらに進めて失敗を投げることができましたが、今のところは単純にしています。

これは誰かがすでにやったことのように聞こえるが、私はグーグルでは何も見ない。これは自動化されたパフォーマンステスト/ベンチマークのための妥当なアプローチですか、もしそうなら、既存のツールやフレームワークがあればこれが簡単になりますか?

おかげで、

Tedderz

+1

あなたはこれを見ましたか? http://sqlblog.com/blogs/joe_chang/archive/2011/02/06/free-tools-for-sql-server-automating-execution-plan-analysis.aspx –

答えて

2

私はこれに対して助言します。オプティマイザによって識別される欠落しているインデックスは、非常に近視的です。つまり、システム全体を考慮せず、このクエリに役立つインデックスを提案しますが、DMLのパフォーマンスを左右する可能性があります。あなたの心は正しい場所にありますが、インデックス分析は科学よりも芸術です(ただし、後者は前者に伝える必要があります)。

1

これに対するアドバイスは有効です。私は欠けているインデックスdmvが同じことのすべての微調整である半ダースのインデックスを推薦するのを見た。私はそれが含まれている列として(実際には、クラスタ化されたキーは常にインデックスに既にあるので、奇妙な)クラスタ化されたキーを追加することをお勧めして見てきました。私はそれが既に存在する指標を推薦するのを見ました。決してこれらの指標を適用しないでください。私はあなたが欠けているインデックスdmvから始めて、もっと徹底的に調査するのに意味のあるインデックスを見つけ出す方が良いと思う(影響力が大きいなど)。次に、これらのインデックスを推奨する原因となったprocsをxmlに問い合わせます。私はそれをするのに苦労します。毎日私たちのプランキャッシュをフラッシュし、9K procs、および従来のアプリからのインラインSQLのトンで、xmlを解析するのにかかる時間は禁止されています。
また、proc stats dmv(sys.dm_exec_procedure_stats)とquery stats dmv(sys.dm_exec_query_stats)から開始してください。平均期間、CPU、およびI/Oの点で最悪であるprocsを見つけます。そのサブセットで欠落しているインデックスがないかチェックしてください(そして、クエリ自体もよく見てください)。これが終わったら、問題なく実行できるprocs /クエリを見ることができます。顕著なシステムへの影響があります。
私は毎日perf統計を収集し、異なるカテゴリの束(合計CPU、平均CPUなど)の上位20行目の要約表を読み込みます。 procがパフォーマンスを変更してリストを作成するのを見て、チューニングの努力が落ちたときの影響を見るのは本当に簡単です。

関連する問題