2017-05-04 1 views
2

最近、当社は私たちが長年開発しているアプリケーションのパフォーマンスに焦点を当てています。パフォーマンステスト中に気付いたことの1つは、特定のメソッドが非常に多くのデータベース呼び出し(500以上のクエリ)を作成していることです。httpリクエストあたりのデータベース呼び出し数を測定する

次に、どのメソッドが非常に多くの呼び出しを行い、どのメソッドを最初にリファクタリングするかのような質問があります。最初にこれらのメソッドのいくつかをリファクタリングしようとすると、ラウンドトリップ回数を減らすために多くの努力が必要であることがわかりました。その理由は、私たちのデータアクセスレイヤーはHibernateのORMフレームワークにかなり依存しており、我々は開発の初期段階からLazyloading構成を誤って使用していることを理解しました。そのため、往復回数が膨大で、パフォーマンスに多くの影響を与えます。レイジーローディングの設定を修正するだけで、多くの回帰ができます。

このように、httpリクエストごとにデータベースコールの数を収集する方法を見つけなければなりません。私は、Application InsightやAppDynamicsのようないくつかのツールがすべてのDependent呼び出しに対して全体的な結果を提供するのを見てきました。しかし、私は、これらのフレームワークを使用するよりも、これらのトレースを別々に収集する方法があるのだろうかと疑問に思っています。

たとえば、http要求が行われるたびに、メソッドの呼び出しスタック内でExecuteQuery()メソッドまたはSqlDataAdapter.Fillメソッドが呼び出されるたびに、カウンタを増やすことができるようにするコントローラに属性を設定できますか?私はこのような解決策を探しています。

ご協力いただきまして誠にありがとうございます。

ご協力いただきありがとうございます。物事のこの種の

+0

http://stackoverflow.com/questions/7667092/nhibernate-database-call-count –

+0

にリンク@PaulAbbott何を、あなたはまた、[SQLプロファイラ](HTTPSなどのツールを使用することができますほか:// MSDNを。 //software.jp/library/ff650699.aspx)またはSSMS –

+0

こんにちは@PaulAbbott、リンクを確認しました。 NHibernateのロギングでは、HTTP要求ごとの統計ではありません。それは私に多くの方法で全体的な情報を提供します。また、NHibernateに固有のものを探しているわけでもありません。私たちのデータアクセス層は主にデータ操作にNHibernateを使用していますが、Ado.Netライブラリを直接使用してデータベースと通信することがありました。したがって、SqlCommand、SqlConnection、およびSqlDataAdapterレベルから統計を収集できる低レベルのソリューションを探しています。 – telli

答えて

1

使用Stackifyプレフィックス:

https://stackify.com/prefix/

ビューSQLクエリ:SQLパラメーター、影響を受けるレコードとどのくらいの時間が結果セットをダウンロードするためにかかったを含みます。

関連する問題