4

ASP.NET アプリケーションから実行されているいくつかのクエリをプロファイリングするにはどうすればよいでしょうか? データベースが原因で非常に遅く動作するソフトウェアがいくつかあります(私はそう思います)。テーブルにはインデックスがありますが、非常に多くのデータを処理しているため、まだドラッグしています。より大きな速度の改善につながる可能性があるいくつかの小さな改善をどこで行うことができるかを確認するには、どのようにプロファイリングすればよいですか?

編集:これらの長いクエリ中に Web サーバーがタイムアウトすることを追加したいと思います。

4

5 に答える 5

5

Sql Server には、この状況に役立つ優れたツールがいくつかあります。これらのツールは、Management Studio (以前は Enterprise Manager + Query Analyzer と呼ばれていました) に組み込まれています。

SQL プロファイラーを使用して、Web アプリケーションからの実際のクエリを表示します。

問題のある各クエリ (多くの CPU 時間または IO を消費するクエリ) をコピーします。「実際の実行計画を表示」でクエリを実行します。欠落している明らかなインデックスが表示されることを願っています。

チューニング ウィザードを実行することもできます (ボタンは [実際の実行計画を表示] のすぐ隣にあります。クエリを実行し、提案を行います。

通常、既にインデックスがあり、クエリの実行がまだ遅い場合は、別の方法でクエリを書き直す必要があります。

すべてのクエリをストアド プロシージャに保持すると、この作業がはるかに簡単になります。

于 2008-09-24T20:34:23.473 に答える
4

SQL Server をプロファイリングするには、SQL プロファイラーを使用します。

また、Red Gate のANTS Profilerを使用して、コードのプロファイリングを行うことができます。

于 2008-09-24T20:15:24.220 に答える
3

ASP.NET とうまく連携するもう 1 つの .NET プロファイラーはdotTraceです。私は個人的にそれを使用しましたが、コードに多くのボトルネックが見つかりました。

于 2008-09-24T21:46:51.770 に答える
2

クエリのプロファイリングに必要な答えがあると思います。ただし、これはパフォーマンス チューニングの最も簡単な部分です。ネットワークやアプリではなくクエリであることがわかったら、どのように問題を見つけて修正しますか?

パフォーマンスの調整は複雑です。しかし、最初に見るべき場所がいくつかあります。あなたはたくさんのデータを返していると言いますか?必要以上のデータを返していますか? 本当に必要な列とレコードだけを返していますか? select * を使用して 100 列を返すと、実際に使用している 5 列を返すよりもはるかに遅くなる可能性があります。

インデックスと統計は最新ですか? しばらくこれを行っていない場合は、statisistcs を更新して BOL のインデックスを再作成する方法を調べてください。すべての結合フィールドにインデックスがありますか? where句のフィールドはどうですか。

カーソルを使用したことがありますか?サブクエリを使用したことがありますか? ユニオンはどうですか~使用している場合はユニオンオールに変更できますか?

クエリは検索可能ですか (この用語に慣れていない場合はググってください)。

group by を使用できる場合、distinct を使用していますか?

ロックを取得していますか?

他にも見るべきものがたくさんありますが、これらはほんの出発点です。

于 2008-09-24T21:00:44.360 に答える
1

調整したい特定のクエリまたはストアド プロシージャがある場合、クエリの前に統計をオンにすると非常に便利であることがわかりました。

SET STATISTICS TIME ON
SET STATISTICS IO ON

Query Analyzer で統計をオンにすると、結果ペインの [メッセージ] タブに統計が表示されます。

IO 統計は、インデックスが必要かどうかを知らせてくれるので、特に役に立ちました。IO 統計からの読み取り数が多い場合は、影響を受けるテーブルに別のインデックスを追加してみてください。インデックスを試しながら、もう一度クエリを実行して、読み取り回数が減ったかどうかを確認します。数回繰り返した後、通常、関連するテーブルに最適なインデックスを見つけることができます。

これらの統計コマンドの MSDN へのリンクは次のとおりです。

統計時間の設定

統計IOの設定

于 2008-09-25T01:31:47.297 に答える