2009-02-23 91 views
0

我一直在對正在處理的應用程序進行一些性能分析。該應用程序是基於Web(asp.net)在MSSQL Server(2005)上使用舊版本的NHibernate(1.0)。SQL事件探查器顯示nhibernate運行查詢兩次?

對應用程序運行分析器似乎顯示有點奇怪,因爲我們似乎是查詢對象兩次,一次是直接查詢並一次包裝在sp_executesql中。例如:

 

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

望着探查範圍內的統計數據我可以看到他們是截然不同的事件(選擇被記錄爲事件45 - SP:StmtCompleted事件,同時調用sp_executesql的記錄爲事件10 - RPC:已完成) 。

在此之前,我還沒有用過NHibernate,但我無法想象這是正常的行爲。我是不是誤解了剖面軌跡(在這種情況下我應該如何解釋上述內容),還是有充分的理由?

如果上述情況和我想的一樣糟糕,有沒有辦法切斷這種行爲?

謝謝

回答

4

您的查詢不會運行兩次。只是這兩個事件是爲相同的陳述而被解僱的。

+0

好的 - 爲了我的理解,爲什麼一個包裹在sp_executesql中,第二個不是? – Chris 2009-02-23 11:16:48