sp_query_store_force_plan(Transact-SQL)
적용 대상: SQL Server 2016(13.x) 이상
Azure SQL 데이터베이스
Azure SQL Managed Instance
쿼리 저장소 특정 쿼리에 대해 특정 계획을 강제 적용할 수 있습니다.
계획이 특정 쿼리에 대해 강제 적용되면 SQL Server는 해당 쿼리가 발생할 때마다 쿼리 최적화 프로그램의 계획을 강제로 실행하려고 합니다. 계획을 강제 적용하는 데 실패하면 확장 이벤트가 발생하고, 최적화 프로그램에게 일반적인 방법으로 최적화하도록 지시합니다.
Syntax
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'
보조 복제본에 대한 쿼리 저장소 사용하도록 설정된 경우 보조 복제본(replica) 계획을 강제 적용할 수 있습니다. 보조 복제본(replica) 및 sp_query_store_unforce_plan
를 실행 sp_query_store_force_plan
합니다. 선택적 @force_plan_scope 인수는 기본적으로 로컬 복제본(replica)(기본 또는 보조)로만 설정되지만 필요에 따라 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)
- sys.query_store_plan_forcing_locations(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)
- 쿼리 저장소에 대한 모범 사례
피드백
다음에 대한 사용자 의견 제출 및 보기