0

いくつかのクエリを発行するページがあり、それらはすべてlog4netを使用してログに記録されます。

<appender name="NHibernateAppenderSQL" type="log4net.Appender.RollingFileAppender">
<file value="c:\dev\log\nhibernate-sql.log" />
<appendToFile value="true" />
<maximumFileSize value="10MB" />
<maxSizeRollBackups value="2" />

<layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="%date %level %thread %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
  <acceptOnMatch value="true" />
  <levelMin value="DEBUG" />
  <levelMax value="FATAL" />
</filter>

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>

そのため、ページの有効期間中に発行されたすべてのクエリを確認できます ( ASP .NET Web Forms )。何らかの理由で、NHibernate が id ごとに約 10 件のクエリをテーブルの 1 つに発行していることに気付きました。データをプリロードしてパフォーマンスを改善したいと考えています。ただし、これらのクエリをトリガーする場所を特定できません。

NHibernate Profiler で安心できることはわかっていますが、職場で使用するためのライセンスがありません。これらのクエリの理由を把握する他の方法はありますか。マッピングファイルも分析しましたが、成功しませんでした。

4

1 に答える 1

1

EDIT:MVCを使用していると仮定しました...普通の古いASP.NETで動作するようです

Mini Profilerを使用して、遅いポイントを見つけ、Web サイトのパフォーマンスを改善しています。StackOverflow によって作成されたフレームワークです。クエリを提供し、ステップを追加することで、誰がそれを呼び出しているかを判断できます。

また、nHibernate と統合して、実行された sql と、各ページのレンダリングが sql で費やされた時間を表示します。

于 2012-09-04T07:44:09.053 に答える