【问题标题】:.net Integrating SQL Profiling.net 集成 SQL 分析
【发布时间】:2014-04-02 05:22:37
【问题描述】:

我们有一个支持 SQL Server 后端的 .net 企业应用程序。

现在我们的一些大客户遇到了一些基于 SQL 的性能瓶颈。我们已经应用了尽可能多的全局索引,我们可以看到这会提高性能,但我们不断地让客户超越我们作为最大用例所能超越的界限,没有什么可以说这是错误的。

这意味着能够提供查看更大客户的能力并为他们的数据库提供索引。在这一点上,我只能根据具体情况看到这是可以实现的(因为所有客户都会以不同的方式使用系统)。

我的想法是以某种方式在客户数据库上运行 SQL Profiler 一段时间,然后将这些数据泵入数据库中的表中,然后在此期间分析数据并在需要提高性能的地方应用索引。

企业应用是 asp.net mvc。有谁知道我们是否可以添加 .net 代码,该代码将通过连接字符串从 asp 服务器启动 SQL 分析器,然后将结果泵入表中?

或者对我们可以采取的其他方法有什么建议?

【问题讨论】:

    标签: asp.net sql-server indexing database-performance sql-server-profiler


    【解决方案1】:

    SQL Server Profiler 只是一个图形界面,用于显示 SQL Trace API 处理的所有事件。可以通过 SQL 存储过程和 .Net 代码启动和捕获跟踪数据。 这是有关如何执行此操作的两个示例。它有点旧,但我已经设法按照说明启动 sql trace throm .net 代码。

    http://blogs.msdn.com/b/sqlprogrammability/archive/2006/05/26/receiving-profiler-events.aspx

    这是探查器执行以启动跟踪的存储过程的列表。你总是可以直接运行它们。 http://technet.microsoft.com/en-us/library/ms187346.aspx

    【讨论】:

      【解决方案2】:

      正如user907246 所说,SQL Profiler 只是图形界面,用于显示 SQL Server Trace API 收集的跟踪信息,允许在线获取和分析数据。但是 SQL Profiler 在服务器上造成了巨大的过载,不建议在生产环境中启动。

      可以按照此处 (http://technet.microsoft.com/en-us/library/cc293613.aspx) 的说明配置和使用服务器端跟踪,而不是 Profiler。您可以指定跟踪文件大小、文件汇总、跟踪过滤器和其他重要标准。使用服务器跟踪而不是 SQL Porfiler 可以减少服务器负载,并允许收集相同的信息进行卸载分析:大量工具可用于离线跟踪分析,例如。 QURE ANALYZER from DBSofic - 专为离线跟踪分析设计的免费产品,能够按不同维度对数据进行分组和过滤,并找出性能瓶颈。

      其中,在 SQL Server 2008 (http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx) 中添加了扩展事件,它将在未来版本中替换 SQL 跟踪。可以在此处找到有关配置和使用扩展事件的更多信息:http://blogs.msdn.com/b/extended_events/

      【讨论】:

        【解决方案3】:

        由于开销,我不建议以编程方式启动跟踪。

        相反,从 SQL Server 获取接近跟踪质量的数据的开销要低得多的方法是计划缓存(也称为过程缓存)。每当您将 SQL 语句传递到 SQL Server(甚至作为存储过程)时,SQL Server 都必须为该语句构建执行计划。它将计划缓存在内存中以避免一遍又一遍地构建它们,并跟踪每个计划的使用情况。您可以获得有关它被调用的次数、它运行多少 CPU 时间和持续时间、它执行多少逻辑读取等信息。

        您可以从我们的独立计划缓存查询开始:http://www.brentozar.com/responder/get-top-resource-consuming-queries/ 如果您想查看哪些查询读取的数据最多,则按逻辑读取降序排序 - 这些通常是索引的最佳候选者。

        如果您想走得更远,请查看我的免费sp_AskBrent®。这是一个存储过程,它获取计划缓存的样本(加上 Perfmon 计数器、存储指标等),等待 5 秒,再获取一个样本,然后比较差异。结果告诉你为什么 SQL Server 现在很慢。

        【讨论】:

          【解决方案4】:

          您所描述的是 SQL Server 的 Database Engine Tuning Advisor 背后的目的。使用 SQL Server Profiler 运行跟踪,然后将其用于数据库引擎优化顾问的输入。如果你真的因为 SQL 而遇到瓶颈,那么它会告诉你。否则,您将不得不开始查看数据库和应用程序操作系统上的内存利用率、磁盘 IO、CPU 百分比等。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-12-12
            • 1970-01-01
            • 2016-02-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-15
            相关资源
            最近更新 更多