NHibernateプロファイラー以外のプロファイリングプログラムや方法があるかどうか疑問に思っています。試用期間が終了し、購入する余裕がありません。
それで、そこに代替手段はありますか?
SQL Server Management Studio2005および2008に付属しているSQLプロファイラーがあります。私はそれらを常に使用しており、非常に貴重だと感じています。
SQLExpress用のSQLプロファイラーもあります: http://sites.google.com/site/sqlprofiler/
これらは、優れたNHibernateプロファイラーとまったく同じではありませんが、高価で非効率的な操作を認識するのに同じように役立ちます。
かなり良い代替手段は、Glimpse
プラグインを使用することです。
NHibernateによって生成されたSQL、それに関連する呼び出しスタック、セッションファクトリ統計、呼び出しタイミングなどがすべて現在のページの下部または新しいウィンドウに表示されます。
Glimpseは次の場所からダウンロードできます: getglimpse.com
Channel9にも素敵なプレゼンテーションがあります: Channel9のGlimpseTeam
2013年9月26日現在のASP.NETのインストール 2013年4月10日
パッケージマネージャーコンソールを使用したインストール:
PM> Install-Package Glimpse.AspNet
PM> Install-Package NHibernate.Glimpse
セッションファクトリを登録して、グローバル統計を表示できるようにします。
NHibernate.Glimpse.Plugin.RegisterSessionFactory(mySessionFactory);
Webアプリケーションを実行し、次のサイトにアクセスします。
http://localhost:8080/Glimpse.axd
アプリケーションがローカルホストのポート8080で実行されていると仮定します。
そこから、Glimpseのオン/オフを切り替えたり、セッションに名前を付けたりできます。
Glimpseをオンにすると、サイトの右下隅に最小化されたページに表示されます(Gをクリックして開きます)。
NHibernate.Glimpse
をAJAX呼び出しで使用するには、ajaxタブ内で検査するリクエストを選択し、通常どおりNHibernate
タブでデータを確認する必要があります。
AJAXリクエスト(この手動セットアップは最新バージョンでは不要になりました)
Ajax呼び出しで機能させるには、「Web.config」の応答のコンテンツタイプに基づいてそれらを有効にする必要があります。
AjaxコントロールツールキットUpdatePanel
の場合、コンテンツタイプtext/plain
が必要です。
ASP.NET WebForms AJAXに必要な垣間見る構成
次に、ajaxタブ内で検査するリクエストを選択する必要があります。
2013年4月9日現在のAsp.Netのインストールに関する注意:
パッケージマネージャーコンソールを使用してインストールします。
PM> Install-Package NHibernate -Version 3.3.2.4000
PM> Install-Package Glimpse -Version 1.0.0-rc1 -Pre
PM> Install-Package -IgnoreDependencies Glimpse.AspNet -Version 1.0.0-rc1 -Pre
Glimpse.AspNet
は-IgnoreDependencies
と一緒にインストールする必要があります。これにより、Glimpse.Core
が1.0.1
に更新されなくなります。
GitクローンNHibernate.Extensions
:
git://github.com/ranzlee/NHibernate.Extensions.git
そして、Nhibernate.Glimpse
プロジェクトをソリューションに追加するか、プロジェクトをビルドしてdll参照を追加します。
Web.config
に追加:
</configuration>
.
.
.
<appSettings>
<add key="nhibernate-logger" value="NHibernate.Glimpse.LoggerFactory, NHibernate.Glimpse"/>
<add key="NHibernate.Glimpse.Loggers" value="command,connection,flush,load,transaction"/>
</appSettings>
</configuration>
また、接続文字列にproviderName
が設定されていることを確認してください。 SqlClientプロバイダーの例:
<connectionStrings>
<add name="TestDb" providerName="System.Data.SqlClient" connectionString="Server=example.com;database=nhibernate_test;User ID=postgres;Password=password;" />
</connectionStrings>
そして、セッションファクトリを登録します。
NHibernate.Glimpse.Plugin.RegisterSessionFactory(SessionHolder.SessionFactory);
SQL Profilerを使用する際の問題は、一部のステートメント(特に挿入)が個別に表示され、バッチがNHibernate(http://www.codinginstinct.com/2009/08/profiling-nhibernate-batching)によって使用されたかどうかを確認する方法がないことです。 .html)。
NHibernateはlog4netを使用してすべてのSQLステートメントをログに記録しています。これを使用して、実際にデータベースに送信されたものを確認できます。
<logger name="NHibernate.SQL"
additivity="false">
<level value="ALL" />
<appender-ref ref="rollingFile" />
</logger>
私は自分自身に尋ねます...あなたはそれを買う余裕がありますかない?サブスクリプション料金は月額わずか16ドルです。それを使った最初の試行に基づいて、それは私のプロジェクトのパフォーマンスに大きな違いをもたらし、私がまだ知らなかったnHibernateについていくつかのことを教えてくれました。