自动测量所有SQL查询

时间:2008-08-14 02:57:19

标签: sql-server optimization

Maybe Normalizing Isn't Normal Jeff Atwood说,“你会自动测量流经你软件的所有查询,对吧?”我不是,但我想。

相关应用程序的一些功能:

6 个答案:

答案 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获取完整的堆栈跟踪。