sp_query_store_force_plan(Transact-SQL)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance
쿼리 저장소 특정 쿼리에 대해 특정 계획을 강제할 수 있습니다.
계획이 특정 쿼리에 대해 강제 적용되면 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)
- 쿼리 저장소에 대한 모범 사례