【问题标题】:Profiling SQL Server and/or ASP.NET分析 SQL Server 和/或 ASP.NET
【发布时间】:2010-09-12 21:03:13
【问题描述】:

如何分析一些从 ASP.NET 应用程序运行的查询?由于数据库(我认为),我工作的一些软件运行速度非常慢。这些表有索引,但它仍然拖累,因为它正在处理大量数据。我如何配置文件以查看我可以在哪些地方进行一些小的改进,从而有望带来更大的速度提升?

编辑:我想补充一点,网络服务器喜欢在这些长查询期间超时。

【问题讨论】:

  • 我想补充一点,网络服务器喜欢在这些长查询期间超时。

标签: asp.net sql-server database profiling


【解决方案1】:

Sql Server 有一些出色的工具可以帮助您解决这种情况。这些工具内置于 Management Studio(以前称为 Enterprise Manager + Query Analyzer)中。

使用 SQL Profiler 向您展示来自 Web 应用程序的实际查询。

复制每个问题查询(占用大量 CPU 时间或 IO 的查询)。使用“显示实际执行计划”运行查询。希望您会看到一些明显缺失的索引。

您也可以运行调优向导(按钮就在“显示实际执行计划”旁边。它将运行查询并提出建议。

通常,如果您已经有索引并且查询仍然运行缓慢,则需要以不同的方式重新编写查询。

将所有查询保存在存储过程中使这项工作更加更容易。

【讨论】:

    【解决方案2】:

    要分析 SQL Server,请使用 SQL Profiler

    您可以使用 Red Gate 的 ANTS Profiler 来分析您的代码。

    【讨论】:

    • 有没有办法不用管理员也可以使用?
    • 您实际上也可以使用最新版本的 ANTS Profiler 来跟踪 SQL 和 I/O 使用情况。
    【解决方案3】:

    另一个与 ASP.NET 配合得很好的 .NET 分析器是 dotTrace。我亲自使用过,发现代码有很多瓶颈。

    【讨论】:

      【解决方案4】:

      我相信您已经获得了分析查询所需的答案。但是,这是性能调优中最简单的部分。一旦您知道是查询而不是网络或应用程序,您如何找到并解决问题?

      性能调优是一件复杂的事情。但是有一些地方可以先看看。你说你要返回大量数据?您返回的数据是否超出了您的需要?你真的只返回你需要的列和记录吗?使用 select * 返回 100 列可能比返回您实际使用的 5 列慢得多。

      您的索引和统计数据是最新的吗?如果您有一段时间没有这样做,请查看如何在 BOL 中更新统计信息和重新索引。您对所有连接字段都有索引吗? where 子句中的字段怎么样。

      你用过光标吗?你用过子查询吗? union 怎么样——如果你用的话可以改成 union all 吗?

      您的查询是否可搜索(如果不熟悉该术语,请谷歌搜索。)

      当您可以使用 group by 时,您是否使用 distinct?

      你有锁吗?

      还有很多其他的东西要看这些只是一个起点。

      【讨论】:

        【解决方案5】:

        如果我想调优某个特定的查询或存储过程,我发现在查询之前打开统计信息非常有用:

        SET STATISTICS TIME ON
        SET STATISTICS IO ON
        

        当您在查询分析器中打开统计信息时,统计信息会显示在结果窗格的消息选项卡中。

        IO 统计数据对我特别有用,因为它可以让我知道我是否需要索引。如果我从 IO 统计信息中看到高读取计数,我可能会尝试向受影响的表添加不同的索引。当我尝试索引时,我再次运行查询以查看读取计数是否下降。经过几次迭代后,我通常可以为所涉及的表找到最佳索引。

        以下是这些统计命令的 MSDN 链接:

        SET STATISTICS TIME

        SET STATISTICS IO

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-17
          • 2014-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多