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;
相关推荐
杨杨杨大侠2 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
andyweike2 小时前
php笔记
开发语言·笔记·php
LOVE️YOU3 小时前
Python 在定义函数时,究竟定义的是什么?
python
段一凡-华北理工大学3 小时前
大模型应用开发 100 天:Python + LLM 从入门到精通 day26~Prompt 调试与优化——A/B 测试与效果评估
windows·python·大模型·prompt·智能体·提示词工程·高炉智能化
Minecraft红客3 小时前
以撒的结合
python·游戏·电脑·娱乐
Circ.3 小时前
Python 调试 Litellm 本地大模型接口:模型列表与对话接口实操踩坑记录
开发语言·python
xian_wwq4 小时前
【学习笔记】等保合规安全基线核查实战
笔记·学习
鼓掌MVP4 小时前
SQL 语句是一个典型的 DDL
sql·ddl
风早爽太4 小时前
用 ‌Render‌ 快速部署网站和常见问题解决
python·fastapi
M78佐菲5 小时前
ARM学习笔记(11)
linux·arm开发·笔记·嵌入式硬件·学习