在Maybe Normalizing Isn't Normal Jeff Atwood说,“你会自动测量流经你软件的所有查询,对吧?”我不是,但我想。
相关应用程序的一些功能:
答案 0 :(得分:6)
除了Brad提到的SQL Profiler之外,如果你想在代码中执行此操作,那么所有数据库调用都需要通过公共库进行汇总。你在那里插入了时间码,瞧,你知道系统中的每个查询需要多长时间。
数据库的单一入口点是任何ORM或数据库层的一个相当标准的特性 - 或者至少它已经存在于我迄今为止所做的任何项目中!
答案 1 :(得分:2)
SQL Profiler是我用来监控流向我的SQL Server的流量的工具。它允许您收集有关SQL Server的详细数据。 SQL Profiler至少已经与SQL Server一起分发,因为至少SQL Server 2000(但也可能在此之前)。
强烈推荐。
答案 2 :(得分:1)
看看本章Jeff Atwood,我写了关于网站性能优化的文章。我们介绍了很多东西,但是有很多关于数据库跟踪和优化的东西: Speed Up Your Site: 8 ASP.NET Performance Tips
答案 3 :(得分:0)
CodePlex上的Dropthings项目有一个用于计时代码块的类。 该类名为TimedLog。它实现了IDisposable。您可以在using语句中包含您想要的代码块。
答案 4 :(得分:0)
如果使用rails,它会在开发日志文件中自动记录所有SQL查询及其执行时间。
我发现这非常有用,因为如果你确实看到一个需要一段时间,那么只需将其直接复制并粘贴到屏幕/日志文件中,然后在mysql中将'explain'放在它前面就是一步。
您不必深入挖掘代码并重新构建正在发生的事情。
毋庸置疑,这不会在生产中发生,因为它会在大约一个小时内让你离开磁盘空间。
答案 5 :(得分:0)
如果您定义了一个为您创建SqlCommands并始终在需要新命令时调用它的工厂,则可以将RealProxy返回给SqlCommand。
然后,此代理可以使用StopWatch测量ExecuteReader / ExecuteScalar等占用的时间并将其记录到某处。在Sql Server Profiler上使用这种方法的优点是,您可以为每个执行的SQL获取完整的堆栈跟踪。