代码之家  ›  专栏  ›  技术社区  ›  Whisk

检测数据库访问

  •  6
  • Whisk  · 技术社区  · 16 年前

    Jeff在其中一个播客中提到,他经常做的一件事就是在数据库调用中插入指令插入,这样他就可以知道是什么查询导致了速度慢等等。这是我过去用SQL Profiler测量过的,但我对其他人使用什么策略将其作为应用程序的一部分来包含这一点很感兴趣。

    我主要使用c,但也希望看到来自不同语言的方法,我更感兴趣的是通过SQL Profiler这样的db平台方法来实现这一点。

    7 回复  |  直到 16 年前
        1
  •  1
  •   John Downey    16 年前

    如果一个查询不仅仅是对一个表的简单选择,我总是在MySQL或PostgreSQL上运行EXPLAIN。如果您使用的是sqlserver,那么managementstudio有一个显示估计的执行计划,它本质上是相同的。查看引擎将如何访问每个表以及它将使用哪些索引非常有用。有时候会让你大吃一惊。

        2
  •  1
  •   Guy    16 年前

    它可能会向您显示您意想不到的使用模式。它可能会显示您在何处使用“逐行”访问而不是“基于集合”的操作。

    最好使用的工具是SQL Profiler,它可以分析“读取”次数与CPU和持续时间的关系。您希望避免高CPU查询、高读取和长持续时间(duh!)。

        3
  •  0
  •   BTB    16 年前

    如果在SQL Management Studio中编写查询,则可以输入: SET STATISTICS TIME ON

        4
  •  0
  •   ninesided    16 年前

    我原以为这里要问的重要问题是“您使用的是什么数据库平台?”

    例如,在Sybase中,安装 MDA tables

        5
  •  0
  •   Whisk    16 年前

    我肯定看到了在应用程序运行时使用SQL Profiler的价值,EXPLAIN或SET STATISTICS将为您提供有关单个查询的信息,但是否有人会将度量点放在代码中以收集有关正在进行的数据库查询的信息—例如,表上的一种查询,最初执行得很好,但随着行数的增加,速度会越来越慢。

    如果您使用的是MySQL或Postgre,那么有很多工具可以实时查看查询活动,但是我还没有找到像SQL Profiler那样好的工具来测量查询性能。

    ELMAH 在这种方式下,它只是插入并提供信息,而不需要太多额外的努力?

        6
  •  0
  •   Douglas Tosi    16 年前

    sinatica.com .
    我们将很快推出firebirdba的实时监控工具。

    </无耻插头>