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;
相关推荐
Storynone18 小时前
【Day20】LeetCode:39. 组合总和,40. 组合总和II,131. 分割回文串
python·算法·leetcode
小鸡吃米…18 小时前
Python—— 环境搭建
python
io_T_T18 小时前
python 文件管理库 Path 解析(详细&基础)
python
左左右右左右摇晃18 小时前
HashMap 扩容机制
笔记
小江的记录本19 小时前
【SQL】多表关系与冷热数据(全维度知识体系)
数据库·sql·mysql·数据库开发·数据库架构
2301_7811435619 小时前
C语言学习笔记
笔记·学习
渔阳节度使20 小时前
SpringAI实时监控+观测性
后端·python·flask
铁手飞鹰20 小时前
Visual Studio创建Cmake工程导出DLL,通过Python调用DLL
android·python·visual studio
飞Link20 小时前
告别盲目找Bug:深度解析 TSTD 异常检测中的预测模型(Python 实战版)
开发语言·python·算法·bug
7yewh20 小时前
jetson_yolo_deployment 02_linux_dev_skills
linux·python·嵌入式硬件·yolo·嵌入式