是否有一个类似于Java / .Net探查器的SQL Server探查器?

时间:2020-03-06 14:55:40  来源:igfitidea点击:

我喜欢我可以剖析Java / .Net应用程序以查找性能瓶颈或者内存问题的方式。例如,很容易在调用树中找到性能瓶颈,其中包括每个方法的执行时间和调用计数。在SQL Server中,我已使用存储过程来调用依赖于视图的其他存储过程,这类似于调用其他方法的Java / .Net方法。因此,似乎相同类型的探查器在这里将非常有帮助。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。但是,我四处张望,找不到一个。是否有人知道用于SQL Server或者任何其他DBMS的此类工具?

更新:感谢我们对SQL Server Profiler的答复,但是此工具非常有限。看一下屏幕截图。

解决方案

我们可以使用涵盖概要分析方面的Sql Profiler,但我倾向于将其更多地视为日志记录工具。
为了诊断性能,我们可能应该只查看查询计划。

如@Galwegian的注释中所述,除了SQL Server Profiler外,在运行查询时,还要签出执行计划。

http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspx
http://en.wikipedia.org/wiki/Query_plan

关于SQL Server事件探查器的另一个完整线程:

识别SQL Server性能问题

我了解我们在说什么,但是通常情况下,数据库优化是在更细粒度的级别进行的。如果数据库活动是由客户端驱动的,则我们应该能够使用现有的客户端事件探查器来获取每个步骤的总时间,然后解决问题轻重的工作(无论是否在数据库中)。

当需要详细分析特定数据库步骤时,可以使用分析器和跟踪。

通常,数据库访问具有特定的粒度,该粒度可以逐个解决,并且数据库活动与正在进行的所有类型的用户访问都不是线性的,而程序分析器通常在分析线性代码路径。

有sql server事件探查器,但是尽管有它的名字,但根据我们提出的问题,它并不能满足要求。它将为我们显示数据库中正在进行的所有调用的详细视图。最好对整个应用程序进行故障排除,而不仅仅是一次处理

听起来我们需要在查询分析器中查看查询/ spoc的执行计划,这将为我们提供与所需数据类似的东西。

如前所述,SQL Server Profiler非常适合检查正在传递给SQL的程序等参数。即使我们需要它,它也不会显示执行树。为此,我所能想到的就是使用Show Plan来查看在运行时确切执行了什么。例如。如果调用的是调用视图的sp,则Profiler仅会向我们显示该sp已执行以及传入了哪些参数。
此外,Windows Performance Monitor具有针对SQL Server的广泛的运行时性能指标。我们可以在服务器上运行它,也可以远程连接。

若要查找性能瓶颈,可以使用数据库引擎优化顾问(位于SQL Server Management Studio的"工具"菜单中。它提供优化查询的建议,并为我们自动优化查询(例如,创建适当的索引等)。

查看SQL Nexus工具。关于确定瓶颈,这有一些不错的报告。
SQL Nexus是一种工具,可以确定SQL Server性能问题的根本原因。它加载并分析SQLDiag和PSSDiag收集的性能数据。它可以大大减少我们花费在手动分析数据上的时间。

在其中一本Inside SQL 2005书籍(也许是T-SQL查询)中,有一种很酷的技术,其中作者将SQL事件探查器的输出转储到表或者excel文件中,并应用数据透视图以与格式类似的格式获取输出。截屏。

我还没有看到任何内置的SQL工具可以为我们提供这种分析。
另一个有用的帖子。

如一些答复所述,SQL Profiler将显示要求。我们必须要做的是打开"事件SP:StmtCompleted"(位于"存储过程"组中),如果我们还希望查询计划也打开" Showplan XML Statistics Profile"(位于"性能"组中) 。 XML计划的最后一个为我们提供了图形描述,并显示了计划中每个步骤处理的实际行。

如果探查器使应用程序变慢,请尽可能对其进行过滤,并考虑进入服务器端跟踪。

高温超导
安迪