SQL Server笔记 -- 第86章:查询存储

节86.1:在数据库上启用查询存储

使用以下命令可在数据库上启用查询存储:

sql 复制代码
ALTER DATABASE tpch SET QUERY_STORE = ON;

启用后,SQL Server / Azure SQL 数据库会收集已执行查询的信息,并通过以下系统视图提供数据:

  • sys.query_store_query
  • sys.query_store_query_text
  • sys.query_store_plan
  • sys.query_store_runtime_stats
  • sys.query_store_runtime_stats_interval
  • sys.database_query_store_options
  • sys.query_context_settings

节86.2:获取 SQL 查询/计划的执行统计

以下查询返回查询、计划及其平均持续时间、CPU 时间、物理与逻辑 I/O 的统计信息:

sql 复制代码
SELECT
    Txt.query_text_id,
    Txt.query_sql_text,
    Pl.plan_id,
    rs.avg_duration,
    rs.avg_cpu_time,
    rs.avg_physical_io_reads,
    rs.avg_logical_io_reads
FROM sys.query_store_plan AS Pl
JOIN sys.query_store_query AS Qry
    ON Pl.query_id = Qry.query_id
JOIN sys.query_store_query_text AS Txt
    ON Qry.query_text_id = Txt.query_text_id
JOIN sys.query_store_runtime_stats AS rs
    ON Pl.plan_id = rs.plan_id;

节86.3:从查询存储中删除数据

如需删除特定查询或计划,可使用以下命令:

sql 复制代码
EXEC sp_query_store_remove_query 4;   -- 删除查询 ID 为 4 的查询
EXEC sp_query_store_remove_plan 3;    -- 删除计划 ID 为 3 的计划

若只想清除某计划的执行统计而保留计划本身:

sql 复制代码
EXEC sp_query_store_reset_exec_stats 3;   -- 重置计划 3 的运行时统计

节86.4:为查询强制计划

当发现某计划表现最优时,可强制优化器始终使用该计划:

sql 复制代码
EXEC sp_query_store_force_plan @query_id, @plan_id;

此后,优化器将为该查询固定使用指定计划。

如需取消强制,执行:

sql 复制代码
EXEC sp_query_store_unforce_plan @query_id, @plan_id;
相关推荐
北斗落凡尘9 小时前
LangGraph 入门实战(8)--绑定工具
python·langchain
ningmengjing_10 小时前
MCP 通讯方式与实现指南
python·agent·mcp
淼澄研学10 小时前
Kimi API黑产倒卖技术解析与Python合规接入指南
开发语言·网络·python
何以解忧,唯有..10 小时前
Python 元组(tuple)详解:使用、遍历与排序
开发语言·python
KANGBboy10 小时前
Python eval安全隐患
开发语言·python
evans在进步11 小时前
LeetCode 394:字符串解码——Java 单栈模拟与嵌套解析详解
java·python·leetcode
淼澄研学11 小时前
Python结合大模型挖掘搜题长尾关键词实操指南
开发语言·python
后季暖11 小时前
langgraph笔记(2)&& fastapi笔记
笔记
小小筱筱12 小时前
LabVIEW笔记:解决周立功CAN卡驱动缺失导致的启动报错问题
笔记·labview
中科高级技工学校12 小时前
乌鲁木齐美术艺考技校实践分享
人工智能·python