sqlserver启用Query Store

Query Store‌是SQL Server 2016及更高版本中引入的一个功能,用于跟踪数据库中的查询执行情况,帮助开发和数据库管理员(DBA)分析和优化数据库性能。Query Store主要包含三个部分:计划存储、运行时统计信息存储和等待统计信息存储。

功能和用途

  1. ‌跟踪执行计划‌:Query Store保存每个查询的多个执行计划,帮助识别无效计划并强制使用更好的计划。
  2. ‌性能监控‌:通过分析执行统计信息和等待统计信息,可以识别资源占用高的查询,优化性能。
  3. ‌历史记录审核‌:保存查询计划的历史记录,便于审计和问题追踪。
  4. ‌故障排除‌:帮助DBA确定在给定时间窗口内查询执行的次数,从而对性能问题进行故障排除。
  5. ‌A/B测试‌:在升级到新版SQL Server期间,保持性能稳定,进行A/B测试。

使用场景

  • ‌找出并解决使用计划选择回归的查询‌:识别由于执行计划更改导致的性能回归。
  • ‌确定和优化排名靠前的资源占用查询‌:帮助优化高资源占用的查询。
  • ‌在升级到新版SQL Server期间保持性能稳定‌:通过历史数据对比,确保升级后的性能稳定性。
  • ‌识别并改进临时工作负载‌:分析临时工作负载的模式和性能瓶颈。

配置和管理

  1. ‌启用Query Store‌:可以通过SQL Server Management Studio (SSMS) 或T-SQL命令启用。例如,使用T-SQL命令启用Query Store:
    ALTER DATABASE [DEMO_1] SET QUERY_STORE = ON;
  2. ‌配置Query Store‌:可以通过T-SQL命令设置各种参数,如清理策略、存储大小等。例如:
    ALTER DATABASE [DEMO_1] SET QUERY_STORE (OPERATION_MODE = READ_ONLY, CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 367), MAX_STORAGE_SIZE_MB = 100);
  3. ‌查看Query Store数据‌:可以通过系统视图和函数查询存储的数据,例如:
    SELECT query_text_id, query_sql_text, plan_id, execution_count, total_worker_time, last_worker_time FROM sys.query_store_query WHERE database_id = DB_ID() AND object_id = OBJECT_ID(N'YourStoredProcedureName');

通过这些功能和配置,Query Store为数据库性能优化提供了强大的工具,帮助识别和解决性能问题。

posted @ 2025-05-16 11:17  zhaoguanhao  阅读(94)  评论(0)    收藏  举报