【问题标题】:What tools are out there for profiling stored procedures in SQL server other than the MS profiler?除了 MS Profiler 之外,还有哪些工具可用于分析 SQL Server 中的存储过程?
【发布时间】:2011-11-30 17:41:04
【问题描述】:

似乎应该有比 SQL Server Profiler 更好的分析 sql 的工具。建立个人资料会话需要很长时间。我正在寻找一个更像 VS profiler 的工具。只需选择一个存储过程,并使用一组参数运行它,我应该得到一个分析图,显示每个查询、SP 调用和函数调用需要多长时间,并允许我深入到带有参数的单个语句被传入了。

我见过一些适用于 Oracle 的工具,但我还没有看到任何适用于 SQL Server 的好工具。

【问题讨论】:

    标签: sql-server performance tsql profiling


    【解决方案1】:

    SQL Profiler 没有任何问题。诚然,它有其独特之处,但仍然是一个很好的工具。关键是,调整单个存储过程的价值通常低于调整查询工作负载的价值。

    我不会分享您“建立个人资料会话需要很长时间”的经验。

    在 SQL Server 2008 以后,还有extended events,但是虽然功能强大,但它们还没有简单的 GUI。

    更新:如果您已经确定了有问题的存储过程,请在 SSMS 中运行并打开“实际执行计划”:这将说明运行需要时间的原因。您还可以包含“SET STATISTICS IO ON”,以便对执行的读/写操作进行细分。

    要检查执行计划,请尝试使用免费的SQL Sentry Plan Explorer

    【讨论】:

    • 当您为 SqlServer 开发 SQL 代码时,您的典型开发环境周期是什么样的?我目前使用 SQL Server Management Studio 来开发我的存储过程,但是我必须去 VS 进行任何调试步骤,这有它自己的一组问题,比如无法查看临时表或表变量的内容。跨度>
    • 如果你想对一个 SP 进行分析以查看花费了这么长时间,你必须打开分析器,添加过滤器以便过滤掉其他人可能在做什么,然后从management studio,然后将输出转储到表中进行分析。与我可以用 C++、C#、C 甚至 Java 编写的代码相比,开发环境是原始的。
    • 如果您已经知道有问题的 SP,请在 SSMS 中运行并打开“实际执行计划”:这将说明运行需要时间的原因。
    • 虽然没有用于扩展事件的内置 GUI;但是 Jonathan Kehayias 有一个用于扩展事件的 SSMS 插件。你可以从:extendedeventmanager.codeplex.com/releases/view/30480
    • 我使用过“实际执行计划”,它有点帮助,除了使用数据不像其他分析工具那么容易。我遇到的主要问题是,要直接过滤到计划中花费最多时间的部分并不容易。
    【解决方案2】:

    SQL Server Profiler 是一个很棒的工具。前几次使用它可能需要一些时间,但您很快就会开始了解事件和所需的输出。

    另一种方法是使用系统存储的过程和函数。编写一个脚本,利用它们为您提供所需的输出,然后保存它并每次更改特定参数。但这与在 Profiler 中保存模板非常相似。

    【讨论】:

      【解决方案3】:

      您可能想试试SQL Sentry Plan Explorer。这是比 SSMS 更有用和更全面的工具,用于通过分析执行计划来分析您的查询。如需更多信息,请参阅this answer

      值得一提的是,该工具提供免费版和专业版,不过,我发现免费版对我的需求没有任何限制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        相关资源
        最近更新 更多