sp_query_store_force_plan (Transact-SQL)
适用于:SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库 Azure SQL 托管实例
启用强制查询存储中特定查询的特定计划。
如果为特定查询强制应用某个计划,每当 SQL Server 遇到该查询时,它会尝试强制在查询优化器中执行此计划。 如果计划强制执行失败,将触发一个扩展事件,并且会指示查询优化器正常进行优化。
语法
sp_query_store_force_plan
[ @query_id = ] query_id ,
[ @plan_id = ] plan_id ,
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing ,
[ @force_plan_scope = ] 'replica_group_id'
[ ; ]
参数
[ @query_id = ] query_id
查询的 ID。 @query_id为 bigint,没有默认值。
[ @plan_id = ] plan_id
要强制执行的查询计划的 ID。 @plan_id 为 bigint,没有默认值。
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing
指示是否应禁用优化的计划强制。 @disable_optimized_plan_forcing是位,默认值为 0
.
[ @force_plan_scope = ] 'replica_group_id'
启用辅助副本查询存储时,可以强制对次要副本执行计划。 在次要副本上执行 sp_query_store_force_plan
并 sp_query_store_unforce_plan
执行。 可选 @force_plan_scope 参数仅默认为本地副本(主副本或辅助副本),但可以选择指定 引用sys.query_store_replicas replica_group_id。
返回代码值
0
(成功)或 1
(失败)。
注解
此功能强制生成的执行计划与强制计划相同或类似。 由于生成的计划可能与指定的 sys.sp_query_store_force_plan
计划不同,因此计划的性能可能会有所不同。 在极少数情况下,性能差异可能很大且为负;在这种情况下,管理员必须删除强制计划。
使用 sys.query_store_plan_forcing_locations 查看次要副本上的强制计划。
权限
需要对数据库拥有 ALTER 权限。
示例
以下示例返回有关查询存储中的查询的信息。
SELECT txt.query_text_id,
txt.query_sql_text,
pl.plan_id,
qry.*
FROM sys.query_store_plan AS pl
INNER JOIN sys.query_store_query AS qry
ON pl.query_id = qry.query_id
INNER JOIN sys.query_store_query_text AS txt
ON qry.query_text_id = txt.query_text_id;
确定 要强制的query_id 和 plan_id 后,请使用以下示例强制查询使用计划。
EXEC sp_query_store_force_plan
@query_id = 3,
@plan_id = 3;
使用与 sys.query_store_replicas 联接的sys.query_store_plan_forcing_locations检索辅助副本的查询存储。
SELECT query_plan
FROM sys.query_store_plan AS qsp
INNER JOIN sys.query_store_plan_forcing_locations AS pfl
ON pfl.query_id = qsp.query_id
INNER JOIN sys.query_store_replicas AS qsr
ON qsr.replica_group_id = qsp.replica_group_id
WHERE qsr.replica_name = 'yourSecondaryReplicaName';
相关内容
- sys.query_store_plan_forcing_locations (Transact-SQL)
- sys.query_store_replicas (Transact-SQL)
- sp_query_store_remove_plan (Transact-SQL)
- sp_query_store_remove_query (Transact-SQL)
- sp_query_store_unforce_plan (Transact-SQL)
- 查询存储目录视图 (Transact-SQL)
- 使用查询存储来监视性能
- sp_query_store_reset_exec_stats (Transact-SQL)
- sp_query_store_flush_db (Transact-SQL)
- Query Store 最佳实践