2017-05-04 67 views
2

最近,我們公司正在關注我們長期開發的應用程序的性能。有一件事我們在性能測試中注意到,某些方法正在進行如此多的數據庫調用(超過500個查詢)測量每個http請求的數據庫調用次數

然後,這帶來了一個問題,例如哪些方法正在執行如此多的調用,以及應該如何優先重用哪種方法來首先重構。當我們最初嘗試對這些方法中的一些進行重構時,我們發現它需要大量努力來減少往返次數。原因是我們的數據訪問層很大程度上取決於NHibernate ORM框架,我們發現從開發開始就完全錯誤地使用了Lazyloading配置。這就是爲什麼往返次數巨大並且對性能影響很大的原因。只是修正延遲加載配置會產生很多回歸。

因此,我們必須找出一種方法來收集每個http請求的數據庫調用次數。我看到了一些工具,如Application Insight,或者AppDynamics爲所有的從屬調用提供了總體結果。但我只是想知道有沒有一種方法來收集這些跟蹤比使用這些框架不同?例如,每次發出http請求時,我們可以在控制器中擁有哪些屬性,只要方法的調用堆棧中調用ExecuteQuery()或SqlDataAdapter.Fill方法,它是否可以增加計數器。我正在尋找這樣的解決方案。

任何幫助,非常感謝。

預先感謝您的所有建議。

+0

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

+0

再說什麼@PaulAbbott聯繫,你也可以使用工具,如[SQL事件探查器(https://開頭MSDN。 microsoft.com/en-us/library/ff650699.aspx)或SSMS –

+0

您好@PaulAbbott,我檢查了鏈接。 NHibernate日誌記錄不提供每個http請求的統計信息。它給了我許多方法的整體信息。而且我也沒有看到特定於NHibernate的東西。儘管我們的數據訪問層主要使用NHibernate進行數據操作,但我們有時直接使用Ado.Net庫來與數據庫進行通信。因此,我正在尋找更低級別的解決方案,它可以從SqlCommand,SqlConnection和SqlDataAdapter級別 – telli

回答

1

使用Stackify前綴這樣的事情:

https://stackify.com/prefix/

查看SQL查詢:包括SQL參數,受影響的記錄以及多長時間了下載結果集。

相關問題