65.9K
CodeProject 正在变化。 阅读更多。
Home

.NET 代码或 SQL – 哪里是性能问题?

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2011 年 10 月 18 日

CPOL

2分钟阅读

viewsIcon

36765

识别应用程序的性能瓶颈的关键在于理解应用程序是如何花费时间的。只有对应用程序的运作方式有最全面的了解,才能理解它做错了什么,正如本文所述。

许多现代应用程序依赖于数据库后端,对于那些为 Microsoft 堆栈构建的应用程序来说,SQL Server 是首选的数据层。虽然在许多情况下,应用程序的性能将受到 CPU 限制,但瓶颈往往在于应用程序的数据库交互。这使得理解代码的 SQL 活动对于掌握其性能至关重要。

过去使用的一种方法是同时运行 SQL Server Profiler 和一个单独的性能分析器。这使您可以分别了解代码性能和查看 SQL 活动,但理解两者之间的关系可能既困难又耗时。有时缓慢或重复的查询是可以接受的,不需要优化,但这完全取决于这些查询运行的上下文。

ANTS Performance Profiler 中的 Profiling Cubed 将 SQL 性能分析构建到用于分析 .NET 代码性能的同一性能分析器中。结果可以并排比较,SQL 和代码性能数据会自动在交互式时间线上相互匹配。

您为什么要在代码分析器中获取 SQL 数据?

让我们看一个例子。Beer House 是一个使用 SQL Server 作为数据层的 ASP.NET 网站。在附加 ANTS Performance Profiler 之后,会收集详细的性能数据。使用交互式时间线,我们可以选择任何时间段来分析代码性能,深入查看任何方法的行级计时数据。虽然这种方法对于查找与 CPU 相关的减速非常有用,但当数据库成为瓶颈时,它就没那么有帮助了。在图 1 中,btnVote_Click() 方法需要很长时间才能运行,但在查看源代码窗口中的计时后,这似乎不是因为代码本身的性能。

dotnet-sql-performance/image001.png

图 1. 代码性能数据,包括行级计时

选择 btnVote_Click() 后,切换到 SQL Server 数据选项卡,我们可以看到该时间段内本地服务器上的所有数据库活动。我们可以检查运行了哪些查询,并获取计时信息和返回的行数。这有助于识别不必要运行查询的情况,通常是为了重新获取可能更好地缓存的数据,或者错误地多次快速连续运行相同的查询的情况。

dotnet-sql-performance/image002.png

图 2. 选定时间段的详细 SQL 活动

要查看 SQL 性能分析的实际应用,请观看此短视频。

SQL 性能分析是 ANTS Performance Profiler 中的 Profiling Cubed 的一部分,它将 SQL、文件 I/O 和 .NET 代码性能分析整合到同一个工具中,以便最全面地了解应用程序的性能。

了解有关 Profiling Cubed 的更多信息,或下载您的 14 天免费试用版

© . All rights reserved.