代码之家  ›  专栏  ›  技术社区  ›  ESV Alconja

自动度量所有SQL查询

  •  5
  • ESV Alconja  · 技术社区  · 17 年前

    Maybe Normalizing Isn't Normal 杰夫·阿特伍德说:“你正在自动测量流经你的软件的所有查询,对吗?”我不是,但我想。

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

    6 回复  |  直到 17 年前
        1
  •  6
  •   Jeff Atwood    17 年前

    除了Brad提到的SQL事件探查器之外,如果您想在代码中这样做,那么 所有数据库调用都需要通过一个公共库 . 在这里插入计时代码,瞧,您知道系统中的每个查询需要多长时间。

    数据库的单一入口点是任何ORM或数据库层的一个相当标准的特性——或者至少它已经出现在我迄今为止工作过的任何项目中了!

        2
  •  2
  •   Brad Leach    17 年前

    SQL Profiler 是我用来监视流向我的SQL服务器的流量的工具。它允许您收集有关SQL Server的详细数据。SQL事件探查器至少从SQL Server 2000(但可能早于此)起就与SQL Server一起分发。

    强烈推荐。

        3
  •  1
  •   Jon Galloway    17 年前

    看看这一章,杰夫·阿特伍德和我写了一些关于网站性能优化的文章。我们涵盖了很多东西,但是有很多关于数据库跟踪和优化的东西: Speed Up Your Site: 8 ASP.NET Performance Tips

        4
  •  0
  •   LaptopHeaven    17 年前

    这个 Dropthings CodePlex上的项目有一个用于代码计时块的类。 该类名为TimedLog。它实现IDisposable。将要计时的代码块包装在using语句中。

        5
  •  0
  •   Orion Edwards    17 年前

    如果使用Rails,它会自动将所有SQL查询以及执行这些查询所花费的时间记录在开发日志文件中。

    我觉得这个非常有用,因为如果你确实看到一个需要花费一段时间的文件,只需复制并粘贴到屏幕/日志文件上,然后在mysql中将“explain”放在它前面,这是一个步骤。

    你不必去挖掘你的代码,重新构建正在发生的事情。

    不用说这在生产中不会发生,因为它会在大约一小时内耗尽磁盘空间。

        6
  •  0
  •   Sam Saffron James Allen    17 年前

    如果定义了一个为您创建sqlcommands并在需要新命令时始终调用它的工厂,则可以返回 RealProxy 到sqlcommand。

    然后,该代理可以使用秒表测量ExecuteReader/ExecuteEscalar等占用的时间,并将其记录到某个位置。与SQL Server事件探查器相比,使用这种方法的优势在于,可以为每个执行的SQL片段获取完整的堆栈跟踪。