2012-02-14 8 views
1

私はASP.NETページ(Webforms)の読み込み速度が遅く、ソースのように見えるコードを見て、データベースへのラウンドトリップ回数が多すぎます。内部ループ内のデータベース呼び出しは、約8000回実行されます。これは、約1桁少ないデータベース呼び出しが必要な場合です。ASP.NETでのデータベース呼び出しの数を調べる

私のコード変更が意図した効果を持つことを確認するには、単一のページのレンダリング中に行われたデータベース呼び出しの記録/観察の最も簡単な方法は何ですか?

編集:このプロジェクトの開発データベースは、現在SQL Server Profiler( "固定サーバーロールのメンバであるか、またはALTER TRACE権限を持っている必要があります)を実行できるように構成されていません。私はDevで私たちのためにこの権限を有効にできるかどうかについてDBAと会話しますが、その間にsysadmin権限を必要としないすべての選択肢について興味があります。

答えて

2

SQL Server Profilerを使用してください - ページを読み込む前に記録を開始し、ページの読み込みが終了したら停止してください。

特定のイベントのみを記録し、ソースアプリケーション、プロセスIDなどでフィルタリングするように設定できます。

修正プログラムがあると、さまざまな実行を比較します。

this answerに記載されているように、ウェブフォームアプリケーションでmvc-mini profilerを使用することもできます。

+0

この種の分析には、SQL Server Profilerが広く使用されています。素晴らしいツール – NotMe

+0

上記の私の編集を参照してください。しかし、ALTER TRACE権限なしでこの(基本的な)プロファイリングステップを実行する方法はありますか? – Ryan

+0

@ライアン - 私はそう信じていない。代わりにミニプロファイラーを見てみましょう。 – Oded

0

Sql Server Profilerは、このジョブに使用するツールです。

0

ペックスとモルズ:http://research.microsoft.com/en-us/projects/pex/downloads.aspxを見てください。これらは「モックオブジェクト」です。コードを邪魔することなく、データベースにオブジェクトを透過的に迂回させるオブジェクトを作成できます。そのオブジェクトの中にいくつかのロギングコードを置くことができます。

+0

PexとMolesがこれにどのように役立つのか説明してください。これらは、彼の問題に関連していないテスト支援です。 – Oded

+0

作成中の呼び出しをデータベースオブジェクトにモックすることができます。彼はある種のAPIを呼び出す必要があります。私は特定のAPIコールを傍受するという観点からそれに着いています。 – deadlyvices

+0

それはあなたの側での前提です。コードビハインドが直接呼び出しを行っている可能性もあります(コードビハインドがないこともあります)。 – Oded

0

ここでは、SQLプロファイラは非常に優れています。 SELECT N + 1が実行されていない検証が必要な場合は、その処理を行います。より正確な情報が必要な場合は、一般的なORMを使用している場合はHibernating Rhinos suite of profilersをチェックしてください。

関連する問題