查看MSSQL计划日志:一步搞定

介绍

在MSSQL数据库中,计划日志是用来跟踪查询计划的工具。它会记录查询语句和MSSQL优化器所生成的执行计划。通过查看计划日志,您可以发现性能问题,并识别需要优化的查询。

查看计划日志

步骤一:启用计划日志

在MSSQL数据库中,计划日志默认是关闭的。因此,您需要先启用计划日志。

通过以下代码来启用计划日志:

USE [master];

GO

EXEC sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

EXEC sp_configure 'query store', 1;

GO

RECONFIGURE;

GO

ALTER DATABASE [your_database_name] SET QUERY_STORE = ON;

在上面的代码中,将 [your_database_name] 替换为您要启用计划日志的数据库名称。

步骤二:访问计划日志

启用计划日志之后,您可以通过以下几种方式来访问计划日志:

方式一:使用SQL Server Management Studio

您可以使用SQL Server Management Studio来查看计划日志。打开SSMS并连接到相应的数据库,然后选择 查询 -> 查询存储过程执行计划。

在 查询存储过程执行计划 窗口中,您可以输入要查找的查询,或者点击 查询列表 按钮来查看所有查询的计划日志。

方式二:使用Transact-SQL

您还可以使用Transact-SQL来访问计划日志。以下代码将返回指定查询的计划日志:

SELECT q.query_id, q.query_hash, q.query_plan_hash, q.statement_text,

s.plan_id, s.last_execution_time, s.execution_count,

s.avg_cpu_time, s.avg_logical_io_reads, s.avg_logical_io_writes,

s.avg_physical_io_reads, s.avg_rowcount, s.avg_elapsed_time

FROM sys.query_store_query AS q

JOIN sys.query_store_plan AS p ON q.query_id = p.query_id

JOIN sys.query_store_runtime_stats AS s ON p.plan_id = s.plan_id

WHERE q.query_id = <YourQueryID>

在上面的代码中,将 <YourQueryID> 替换为您要查找计划日志的查询ID。

方式三:使用PowerShell

在MSSQL 2016及以上版本中,您还可以使用PowerShell来访问计划日志。以下代码将返回指定查询的计划日志:

Import-Module SqlServer

$connectionString = "Server=localhost;Database=your_database_name;Integrated Security=True"

$queryStore = Get-DbaQueryStore -ConnectionString $connectionString

$queryStore | Get-DbaQueryStoreQuery -Id <YourQueryID>

在上面的代码中,将 <YourQueryID> 替换为您要查找计划日志的查询ID。

结论

通过启用计划日志并使用上述任何一种方法,您可以轻松地访问计划日志,查找性能问题并优化查询。

数据库标签