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;
相关推荐
zzb1580几秒前
系统提示词-System Prompt 动态组装
人工智能·后端·python·prompt
Elastic 中国社区官方博客2 分钟前
将 Logstash 管道从 Azure Event Hubs 迁移到 Kafka 输入插件
大数据·数据库·elasticsearch·microsoft·搜索引擎·kafka·azure
chushiyunen5 分钟前
milvus数据库管理工具attu使用笔记
笔记·milvus
鱼鳞_10 分钟前
Java学习笔记_Day23(HashMap)
java·笔记·学习
sheeta199815 分钟前
LeetCode 每日一题笔记 日期:2026.04.07 题目:2069.模拟行走机器人二
笔记·leetcode·机器人
喵叔哟17 分钟前
5.【.NET10 实战--孢子记账--产品智能化】--基础框架与微软官方包批量升级
人工智能·microsoft·.net
嫂子的姐夫17 分钟前
34-自动化补环境和jsdom补环境
爬虫·python·逆向
代码旅人ing24 分钟前
数组算法刷题指南
笔记
PawSQL25 分钟前
PawSQL平台功能月度更新 | 2026年2月
sql·pawsql·sql审核
江湖有缘28 分钟前
基于华为openEuler系统部署Memory笔记管理工具
笔记