sys.query_store_plan (TRANSACT-SQL)sys.query_store_plan (Transact-SQL)

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터)예Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

쿼리와 관련 된 각 실행 계획에 대 한 정보를 포함 합니다.Contains information about each execution plan associated with a query.

열 이름Column name 데이터 형식Data type DescriptionDescription
plan_idplan_id bigintbigint 기본 키입니다.Primary key.
query_idquery_id bigintbigint 외래 키입니다.Foreign key. 에 조인 sys.query_store_query (TRANSACT-SQL)합니다.Joins to sys.query_store_query (Transact-SQL).
plan_group_idplan_group_id bigintbigint 계획 그룹의 ID입니다.ID of the plan group. 커서 쿼리에 일반적으로 여러 필요 (채우고 인출) 계획 합니다.Cursor queries typically require multiple (populate and fetch) plans. 채우고 함께 컴파일되는 인출 계획은 동일한 그룹에 있습니다.Populate and fetch plans that are compiled together are in the same group.

0 계획 그룹에 없는 것을 의미 합니다.0 means plan is not in a group.
engine_versionengine_version nvarchar(32)nvarchar(32) 계획을 컴파일하는 데 사용 하는 엔진의 버전 'major.minor.build.revision' 형식입니다.Version of the engine used to compile the plan in 'major.minor.build.revision' format.
compatibility_levelcompatibility_level smallintsmallint 쿼리에서 참조 하는 데이터베이스의 데이터베이스 호환성 수준입니다.Database compatibility level of the database referenced in the query.
query_plan_hashquery_plan_hash binary(8)binary(8) 개별 계획의 MD5 해시입니다.MD5 hash of the individual plan.
query_planquery_plan nvarchar(max)nvarchar(max) 쿼리 계획에 대 한 Showplan XML입니다.Showplan XML for the query plan.
is_online_index_planis_online_index_plan bitbit 온라인 인덱스 작성 중 계획 사용 되었습니다.Plan was used during an online index build.
is_trivial_planis_trivial_plan bitbit 계획은 간단한 계획 (쿼리 최적화 프로그램의 0 단계에서 출력).Plan is a trivial plan (output in stage 0 of query optimizer).
is_parallel_planis_parallel_plan bitbit 계획은 병렬입니다.Plan is parallel.
is_forced_planis_forced_plan bitbit 계획에는 사용자는 저장된 프로시저를 실행 하는 경우 강제 하는 것으로 표시 됩니다 sys.sp_query_store_force_plan합니다.Plan is marked as forced when user executes stored procedure sys.sp_query_store_force_plan. 적용 메커니즘 보장 하지 않습니다 정확 하 게이 계획에서 참조 하는 쿼리에 대 한 사용할 수 있는지 query_id합니다.Forcing mechanism does not guarantee that exactly this plan will be used for the query referenced by query_id. 계획 강제 적용 하면 다시 컴파일해야 하는 쿼리 및 일반적으로 정확 하 게 동일 하거나 유사한 계획을 참조 하는 계획을 생성 plan_id합니다.Plan forcing causes query to be compiled again and typically produces exactly the same or similar plan to the plan referenced by plan_id. 계획 강제 적용 성공 하지 못하면 force_failure_count 증가 하 고 last_force_failure_reason 실패 이유를 사용 하 여 채워집니다.If plan forcing does not succeed, force_failure_count is incremented and last_force_failure_reason is populated with the failure reason.
is_natively_compiledis_natively_compiled bitbit 계획에 고유 하 게 컴파일된 메모리 액세스에 최적화 된 프로시저를 포함 합니다.Plan includes natively compiled memory optimized procedures. (0 = FALSE, 1 = TRUE).(0 = FALSE, 1 = TRUE).
force_failure_countforce_failure_count bigintbigint 이 계획을 강제 적용에 실패 한 횟수 만큼 합니다.Number of times that forcing this plan has failed. 쿼리를 다시 컴파일할 때에 증가할 수 있습니다 (모든 실행에 없는).It can be incremented only when the query is recompiled (not on every execution). 이 0으로 다시 설정 될 때마다 is_plan_forced 에서 변경 되었습니다 FALSETRUE합니다.It is reset to 0 every time is_plan_forced is changed from FALSE to TRUE.
last_force_failure_reasonlast_force_failure_reason intint 계획 강제 적용에 실패 한 이유입니다.Reason why plan forcing failed.

0: 없음 오류, 실패를 강제로 발생 시킨 오류의 오류 번호가 고 그렇지0: no failure, otherwise error number of the error that caused the forcing to fail

8637: ONLINE_INDEX_BUILD8637: ONLINE_INDEX_BUILD

8683: INVALID_STARJOIN8683: INVALID_STARJOIN

8684: TIME_OUT8684: TIME_OUT

8689: NO_DB8689: NO_DB

8690: HINT_CONFLICT8690: HINT_CONFLICT

8691: SETOPT_CONFLICT8691: SETOPT_CONFLICT

8694: DQ_NO_FORCING_SUPPORTED8694: DQ_NO_FORCING_SUPPORTED

8698: NO_PLAN8698: NO_PLAN

8712: NO_INDEX8712: NO_INDEX

8713: VIEW_COMPILE_FAILED8713: VIEW_COMPILE_FAILED

<다른 값 >: GENERAL_FAILURE<other value>: GENERAL_FAILURE
last_force_failure_reason_desclast_force_failure_reason_desc nvarchar(128)nvarchar(128) Last_force_failure_reason_desc의 텍스트 설명입니다.Textual description of last_force_failure_reason_desc.

대상 테이블에 인덱스가 온라인 빌드되는 동안 데이터를 수정 하 ONLINE_INDEX_BUILD: 쿼리 시도ONLINE_INDEX_BUILD: query tries to modify data while target table has an index that is being built online

INVALID_STARJOIN: 계획 잘못 StarJoin 사양이 들어 있습니다.INVALID_STARJOIN: plan contains invalid StarJoin specification

강제 계획에 의해 지정 된 계획을 검색 하는 동안 허용 되는 작업을 초과 하는 최적화 프로그램은 수 TIME_OUT:TIME_OUT: Optimizer exceeded number of allowed operations while searching for plan specified by forced plan

NO_DB: 계획에 지정 된 데이터베이스가 존재 하지 않는NO_DB: A database specified in the plan does not exist

HINT_CONFLICT: 쿼리 컴파일할 수 없습니다 쿼리 힌트를 사용 하 여 계획 충돌HINT_CONFLICT: Query cannot be compiled because plan conflicts with a query hint

DQ_NO_FORCING_SUPPORTED: 계획 분산된 쿼리 또는 전체 텍스트 작업 사용과 충돌 하므로 쿼리를 실행할 수 없습니다.DQ_NO_FORCING_SUPPORTED: Cannot execute query because plan conflicts with use of distributed query or full-text operations.

NO_PLAN: 쿼리 프로세서를 생성할 수 없습니다. 쿼리 계획을 쿼리에 대 한 유효 강제 계획을 확인할 수 없습니다.NO_PLAN: Query processor could not produce query plan because forced plan could not be verified to be valid for the query

더 이상 계획에 지정 된 인덱스에 있는 NO_INDEX:NO_INDEX: Index specified in plan no longer exists

VIEW_COMPILE_FAILED: 계획에서 참조 된 인덱싱된 뷰에 문제가 있으므로 쿼리 계획을 적용할 수 없습니다.VIEW_COMPILE_FAILED: Could not force query plan because of a problem in an indexed view referenced in the plan

GENERAL_FAILURE: 일반 강제 오류 (위의 이유를 사용 하 여 다루지 않음)GENERAL_FAILURE: general forcing error (not covered with reasons above)
count_compilescount_compiles bigintbigint 컴파일 통계를 계획 합니다.Plan compilation statistics.
initial_compile_start_timeinitial_compile_start_time datetimeoffsetdatetimeoffset 컴파일 통계를 계획 합니다.Plan compilation statistics.
last_compile_start_timelast_compile_start_time datetimeoffsetdatetimeoffset 컴파일 통계를 계획 합니다.Plan compilation statistics.
last_execution_timelast_execution_time datetimeoffsetdatetimeoffset 마지막 실행 시간을 참조 마지막 쿼리/계획의 종료 시간입니다.Last execution time refers to the last end time of the query/plan.
avg_compile_durationavg_compile_duration floatfloat 컴파일 통계를 계획 합니다.Plan compilation statistics.
last_compile_durationlast_compile_duration bigintbigint 컴파일 통계를 계획 합니다.Plan compilation statistics.

계획 강제 적용 제한 사항Plan forcing limitations

쿼리 저장소에는 쿼리 최적화 프로그램이 특정 실행 계획을 사용하도록 적용하는 메커니즘이 있습니다.Query Store has a mechanism to enforce Query Optimizer to use certain execution plan. 그러나 계획이 적용되지 않도록 하는 몇 가지 제한 사항이 있습니다.However, there are some limitations that can prevent a plan to be enforced.

첫째, 계획에 다음과 같은 구성이 포함된 경우First, if the plan contains following constructions:

  • Insert bulk 문Insert bulk statement.
  • Insert bulk 문Insert bulk statement.
  • 외부 테이블에 대한 참조Reference to an external table
  • 분산 쿼리 또는 전체 텍스트 작업Distributed query or full-text operations
  • 전역 쿼리 사용Use of Global queries
  • 커서Cursors
  • 잘못된 스타 조인 사양Invalid star join specification

둘째, 계획에 사용되는 개체를 더 이상 사용할 수 없는 경우Second, when objects that plan relies on, are no longer available:

  • 데이터베이스(계획이 발생한 데이터베이스가 더 이상 없는 경우)Database (if Database, where plan originated, does not exist anymore)
  • 인덱스(더 이상 없거나 사용할 수 없는 경우)Index (no longer there or disabled)

마지막으로, 계획 자체에 문제가 있는 경우Finally, problems with the plan itself:

  • 쿼리에 적합하지 않음Not legal for query
  • 쿼리 최적화 프로그램이 허용되는 작업 수를 초과함Query Optimizer exceeded number of allowed operations
  • 잘못 구성된 계획 XMLIncorrectly formed plan XML

사용 권한Permissions

필요 합니다 VIEW DATABASE STATE 권한.Requires the VIEW DATABASE STATE permission.

관련 항목See Also

sys.database_query_store_options (TRANSACT-SQL) sys.database_query_store_options (Transact-SQL)
sys.query_context_settings (TRANSACT-SQL) sys.query_context_settings (Transact-SQL)
sys.query_store_query (TRANSACT-SQL) sys.query_store_query (Transact-SQL)
sys.query_store_query_text (TRANSACT-SQL) sys.query_store_query_text (Transact-SQL)
sys.query_store_runtime_stats (TRANSACT-SQL) sys.query_store_runtime_stats (Transact-SQL)
sys.query_store_wait_stats(Transact-SQL)sys.query_store_wait_stats (Transact-SQL)
sys.query_store_runtime_stats_interval (TRANSACT-SQL) sys.query_store_runtime_stats_interval (Transact-SQL)
관련된 뷰, 함수 및 프로시저 Monitoring Performance By Using the Query Store
카탈로그 뷰(Transact-SQL) Catalog Views (Transact-SQL)
쿼리 저장소 저장 프로시저 (TRANSACT-SQL)Query Store Stored Procedures (Transact-SQL)