0

作業中のアプリケーションでパフォーマンス分析を行っています。このアプリケーションは、MSSQL Server(2005)で古いバージョンのNHibernate(1.0)を使用するWebベース(asp.net)です。

アプリケーションに対してプロファイラーを実行すると、オブジェクトを2回クエリしているように見えます。1回は直接クエリとして、もう1回はsp_executesqlでラップされています。例えば:

SELECT col1、col2 FROM TABLE
exec sp_executesql N'SELECT col1、col2 FROM TABLE'

プロファイラー内の統計を見ると、それらは別個のイベントであることがわかります(sp_executesqlの呼び出しがイベント10-RPC:Completedとして記録されているのに対し、selectはイベント45-SP:StmtCompletedとして記録されています)。

私はこれまでNHibernateをあまり使用していませんでしたが、これが正常な動作であるとは想像できません。プロファイルトレースを読み間違えたのでしょうか(この場合、上記をどのように解釈する必要がありますか)、またはこれには正当な理由がありますか?

上記が私が思うほど悪い場合、この動作をオフにする方法はありますか?

ありがとう

4

1 に答える 1

4

クエリは2回実行されません。これらの2つのイベントが同じステートメントに対して発生するだけです。

于 2009-02-23T11:08:41.343 に答える