sqlserver启用Query Store
Query Store是SQL Server 2016及更高版本中引入的一个功能,用于跟踪数据库中的查询执行情况,帮助开发和数据库管理员(DBA)分析和优化数据库性能。Query Store主要包含三个部分:计划存储、运行时统计信息存储和等待统计信息存储。
功能和用途
- 跟踪执行计划:Query Store保存每个查询的多个执行计划,帮助识别无效计划并强制使用更好的计划。
- 性能监控:通过分析执行统计信息和等待统计信息,可以识别资源占用高的查询,优化性能。
- 历史记录审核:保存查询计划的历史记录,便于审计和问题追踪。
- 故障排除:帮助DBA确定在给定时间窗口内查询执行的次数,从而对性能问题进行故障排除。
- A/B测试:在升级到新版SQL Server期间,保持性能稳定,进行A/B测试。
使用场景
- 找出并解决使用计划选择回归的查询:识别由于执行计划更改导致的性能回归。
- 确定和优化排名靠前的资源占用查询:帮助优化高资源占用的查询。
- 在升级到新版SQL Server期间保持性能稳定:通过历史数据对比,确保升级后的性能稳定性。
- 识别并改进临时工作负载:分析临时工作负载的模式和性能瓶颈。
配置和管理
- 启用Query Store:可以通过SQL Server Management Studio (SSMS) 或T-SQL命令启用。例如,使用T-SQL命令启用Query Store:
ALTER DATABASE [DEMO_1] SET QUERY_STORE = ON; - 配置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); - 查看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为数据库性能优化提供了强大的工具,帮助识别和解决性能问题。
浙公网安备 33010602011771号