介绍
在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。
结论
通过启用计划日志并使用上述任何一种方法,您可以轻松地访问计划日志,查找性能问题并优化查询。