2017-05-04 68 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参数,受影响的记录以及多长时间了下载结果集。

相关问题