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;
相关推荐
玉鸯1 小时前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
weixin_446260852 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
a1117762 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
qetfw2 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
用户8356290780513 小时前
Python 实现 Excel 页面布局与打印设置自动化
后端·python
破碎的南瓜3 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
一次旅行3 小时前
Python+大模型端到端自动化日报系统
开发语言·python·自动化
天天爱吃肉82183 小时前
【电源拆解:跟着问答逐一认识开关适配器PCB元器件】
大数据·人工智能·python·功能测试·嵌入式硬件·汽车