当前位置: 首页 > 数据应用 > SqlServer

SQL Server如何查看最近执行的SQL语句及其性能分析

时间:2023-06-28 16:45:37 SqlServer

SQL Server如何查看最近执行的SQL语句及其性能分析

在SQL Server中,有时我们需要查看最近执行的SQL语句,以便了解数据库的运行情况,或者发现和解决一些性能问题。本文将介绍两种方法来查询最近执行的SQL语句及其相关信息,如执行时间、CPU消耗、逻辑读写等。

方法一:使用动态管理视图(DMV)

动态管理视图(DMV)是SQL Server提供的一组视图和函数,用于访问服务器和数据库的运行时信息。其中,sys.dm_exec_query_stats视图可以返回缓存中每个查询计划的汇总性能统计信息,sys.dm_exec_sql_text函数可以返回缓存中每个批处理或存储过程的文本,sys.dm_exec_query_plan函数可以返回缓存中每个查询计划的XML表示。

我们可以通过以下语句来查询最近执行的SQL语句及其性能信息:

qs.execution_count AS [执行次数],

qs.total_elapsed_time / qs.execution_count AS [平均执行时间(ms)],

qs.total_worker_time / qs.execution_count AS [平均CPU时间(ms)],

qs.total_logical_reads / qs.execution_count AS [平均逻辑读次数],

qs.total_logical_writes / qs.execution_count AS [平均逻辑写次数],

qp.query_plan AS [查询计划]

这里我们使用了TOP 10来限制返回结果的数量,你可以根据需要修改。我们还使用了ORDER BY子句来按照平均执行时间降序排序,你也可以根据其他指标进行排序。

方法二:使用SQL Server Profiler

SQL Server Profiler是一个图形化工具,用于监视和跟踪SQL Server实例的活动。我们可以使用它来捕获和分析最近执行的SQL语句及其性能信息。

要使用SQL Server Profiler,我们需要先启动它,并选择一个跟踪模板。跟踪模板是一组预定义的事件和数据列,用于指定要捕获和显示的信息。我们可以选择系统提供的模板,也可以自定义模板。在本文中,我们选择“T-SQL_SPs”模板,它包含了以下事件和数据列:

1.RPC:Completed:远程过程调用完成时触发,包括存储过程、扩展存储过程和预备语句。

2.SP:StmtCompleted:存储过程内部的每个语句完成时触发。

3.SQL:BatchCompleted:批处理完成时触发。

4.SQL:BatchStarting:批处理开始时触发。

5.TextData:事件相关的文本数据,如SQL语句、存储过程名称等。

6.CPU:事件消耗的CPU时间,单位为毫秒。

7.Reads:事件执行期间发生的逻辑读次数。

8.Writes:事件执行期间发生的逻辑写次数。

9.Duration:事件持续的时间,单位为毫秒。

启动跟踪后,我们可以在跟踪窗口中看到最近执行的SQL语句及其性能信息。我们可以对结果进行筛选、排序、分组、聚合等操作,也可以将结果保存到文件或表中,以便进一步分析。