8

でいくつかのビジネス ロジックを生成するアプリケーションのストアド プロシージャを作成しています。速度、精度などのストアド プロシージャのパフォーマンスを確認するにはどうすればよいですか。アイデアや方向性は大歓迎です。

4

1 に答える 1

17

個人的に、sprocの速度をテストするときは、次のようなものを使用します。

DBCC FREEPROCCACHE;
DBCC DROPCLEANBUFFERS;

GO

SET STATISTICS TIME ON;
SET STATISTICS IO ON;

GO

EXEC <my sproc> [args]

DBCC FREEPROCCACHE

DBCC FREEPROCCACHEを使用して、プロシージャーのキャッシュをクリアします。プロシージャキャッシュを解放すると、たとえば、アドホックSQLステートメントがキャッシュから再利用されるのではなく再コンパイルされます。SQLプロファイラーを介して監視する場合、DBCCFREEPROCCACHEが機能するときにキャッシュ削除イベントが発生するのを見ることができます。DBCC FREEPROCCACHEは、オプティマイザーがメモリーにキャッシュしたすべてのストアード・プロシージャー・プランを無効にし、それらのプロシージャーが次に実行されるときにSQLServerに新しいプランをコンパイルするように強制します。

DBCC DROPCLEANBUFFERS

DBCC DROPCLEANBUFFERSを使用して、サーバーをシャットダウンおよび再起動せずに、コールドバッファーキャッシュを使用してクエリをテストします。DBCC DROPCLEANBUFFERSは、データキャッシュを空にする役割を果たします。クエリの以前の実行のためにバッファキャッシュにロードされたデータはすべて削除されます。

上記の恥知らずな盗難:このブログ投稿

統計時間をオンに設定

各ステートメントの解析、コンパイル、および実行に必要なミリ秒数を表示します。

さらに読む(MSDN)

統計IOをオンに設定

Transact-SQLステートメントによって生成されたディスクアクティビティの量に関する情報をSQLServerに表示させます。

さらに読む(MSDN)

クエリの正確さに関しては、それは開発者としてあなたが見なければならないことです。精度をテストする自動化された方法はないと思います。

うまくいけば、それはあなたが始めるのに役立つでしょう。

注:これはSSMS内で行います

于 2012-11-07T20:21:24.123 に答える