Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri
Microsoft Fabric'te Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
SQL veritabanı
Bir sorguyla ilişkili her yürütme planı hakkında bilgi içerir.
| Sütun adı | Veri türü | Description |
|---|---|---|
plan_id |
bigint | Birincil anahtar. |
query_id |
bigint | Yabancı anahtar. sys.query_store_query (Transact-SQL) öğesine katılır. |
plan_group_id |
bigint | Plan grubunun kimliği. İmleç sorguları genellikle birden çok (doldurma ve getirme) planı gerektirir. Birlikte derlenen doldurma ve getirme planları aynı grupta yer alır.0 , planın bir grupta olmadığı anlamına gelir. |
engine_version |
nvarchar(32) | Planı <major>.<minor>.<build>.<revision> biçimde derlemek için kullanılan altyapının sürümü. |
compatibility_level |
smallint | Sorguda başvuruda bulunan veritabanının veritabanı uyumluluk düzeyi. |
query_plan_hash |
ikili (8) | Tek tek planın MD5 karması. |
query_plan |
nvarchar(max) | Sorgu planı için showplan XML. |
is_online_index_plan |
bit | Plan, çevrimiçi dizin derlemesi sırasında kullanıldı. Not: Azure Synapse Analytics her zaman döndürür 0. |
is_trivial_plan |
bit | Plan önemsiz bir plandır (sorgu iyileştiricisinin 0. aşamasında çıktı). Not: Azure Synapse Analytics her zaman döndürür 0. |
is_parallel_plan |
bit | Plan paraleldir. Not: Azure Synapse Analytics her zaman döndürür 1. |
is_forced_plan |
bit | Plan, kullanıcı saklı yordamı sys.sp_query_store_force_planyürütürken zorlamalı olarak işaretlenir. Zorlama mekanizması, tarafından başvuruda bulunılan sorgu için tam olarak bu planın kullanılacağını query_id. Plan zorlama, sorgunun yeniden derlenmiş olmasına neden olur ve genellikle tarafından plan_idbaşvuruda bulunılan plana tam olarak aynı veya benzer bir plan oluşturur. Plan zorlama başarılı olmazsa artırılır force_failure_count ve last_force_failure_reason hata nedeni ile doldurulur.Not: Azure Synapse Analytics her zaman döndürür 0. |
is_natively_compiled |
bit | Plan, yerel olarak derlenmiş bellek için iyileştirilmiş yordamlar içerir. (0 = FALSE, 1 = TRUE).Not: Azure Synapse Analytics her zaman döndürür 0. |
force_failure_count |
bigint | Bu planı zorlamanın başarısız olduğu süre. Yalnızca sorgu yeniden derlendiğinde artırılabilir (her yürütmede artırılamaz).
0 olarak is_forced_plan her değiştirildiğinde olarak sıfırlanır FALSETRUE.Not: Azure Synapse Analytics her zaman döndürür 0. |
last_force_failure_reason |
int | Plan zorlamanın başarısız olmasının nedeni. 0: hata yok, aksi takdirde zorlamanın başarısız olmasına neden olan hatanın hata numarası 3617: COMPILATION_ABORTED_BY_CLIENT8637: ONLINE_INDEX_BUILD8675: OPTIMIZATION_REPLAY_FAILED8683: INVALID_STARJOIN8684: TIME_OUT8689: NO_DB8690: HINT_CONFLICT8691: SETOPT_CONFLICT8694: DQ_NO_FORCING_SUPPORTED8698: NO_PLAN8712: NO_INDEX8713: VIEW_COMPILE_FAILED<diğer değer>: GENERAL_FAILURENot: Azure Synapse Analytics her zaman döndürür 0. |
last_force_failure_reason_desc |
nvarchar(128) | öğesinin last_force_failure_reasonmetinsel açıklaması.COMPILATION_ABORTED_BY_CLIENT: client sorgu derlemesi tamamlanmadan önce durdurulduONLINE_INDEX_BUILD: hedef tabloda çevrimiçi olarak oluşturulan bir dizin varken sorgu verileri değiştirmeye çalışırOPTIMIZATION_REPLAY_FAILED: İyileştirme yeniden yürütme betiği yürütülemedi.INVALID_STARJOIN: plan geçersiz StarJoin belirtimi içeriyorTIME_OUT: İyileştirici, zorlamalı plan tarafından belirtilen planı ararken izin verilen işlem sayısını aştıNO_DB: Planda belirtilen bir veritabanı yokHINT_CONFLICT: Plan bir sorgu ipucuyla çaktığı için sorgu derlenemiyorDQ_NO_FORCING_SUPPORTED: Plan dağıtılmış sorgu veya tam metin işlemlerinin kullanımıyla çaktığı için sorgu yürütülemiyor.NO_PLAN: Zorlamalı plan sorgu için geçerli olarak doğrulanamadığından sorgu işlemcisi sorgu planı üretemediNO_INDEX: Planda belirtilen dizin artık yokVIEW_COMPILE_FAILED: Planda başvuruda bulunan dizinlenmiş görünümdeki bir sorun nedeniyle sorgu planı zorlanamadıGENERAL_FAILURE: genel zorlama hatası (diğer nedenlerle ele alınmaz)Not: Azure Synapse Analytics her zaman döndürür NONE. |
count_compiles |
bigint | Derleme istatistiklerini planlayın. |
initial_compile_start_time |
datetimeoffset | Derleme istatistiklerini planlayın. |
last_compile_start_time |
datetimeoffset | Derleme istatistiklerini planlayın. |
last_execution_time |
datetimeoffset | Son yürütme zamanı, sorgunun/planın son bitiş zamanına başvurur. |
avg_compile_duration |
float | Derleme istatistiklerini mikrosaniye olarak planlayın. Saniyeleri almak için 1.000.000'e bölün. |
last_compile_duration |
bigint | Derleme istatistiklerini mikrosaniye olarak planlayın. Saniyeleri almak için 1.000.000'e bölün. |
plan_forcing_type |
int |
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri Zorlama türünü planlayın. 0: NONE1: MANUAL2: AUTO |
plan_forcing_type_desc |
nvarchar(60) |
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri metin açıklaması plan_forcing_type.NONE: Plan zorlama yokMANUAL: Plan kullanıcı tarafından zorlandıAUTO: Otomatik ayarlama ile zorlanan plan. |
has_compile_replay_script |
bit |
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri Planın kendisiyle ilişkilendirilmiş bir iyileştirme yeniden yürütme betiği olup olmadığını gösterir: 0 = İyileştirme yeniden yürütme betiği yok (yok veya geçersiz). 1 = en iyi duruma getirme yeniden yürütme betiği kaydedildi. Azure Synapse Analytics için geçerli değildir. |
is_optimized_plan_forcing_disabled |
bit |
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri İyileştirilmiş plan zorlamasının plan için devre dışı bırakılıp bırakılmadığını gösterir: 0 = devre dışı. 1 = devre dışı değil. Azure Synapse Analytics için geçerli değildir. |
plan_type |
int |
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri Plan türü. 0: Derlenmiş Plan 1: Dağıtıcı Planı 2: Sorgu Değişken Planı Azure Synapse Analytics için geçerli değildir. |
plan_type_desc |
nvarchar(120) |
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri Plan türünün metin açıklaması. Derlenmiş Plan: Planın parametreye duyarlı olmayan ve iyileştirilmiş bir plan olduğunu gösterir Dağıtıcı Planı: Planın parametreye duyarlı plan için iyileştirilmiş dağıtıcı planı olduğunu gösterir Sorgu Değişken Planı: Planın parametreye duyarlı plan için iyileştirilmiş sorgu değişken planı olduğunu gösterir Azure Synapse Analytics için geçerli değildir. |
Açıklamalar
İkincil çoğaltmalar için Sorgu Deposu etkinleştirildiğinde birden fazla plan zorlanabilir.
Azure Synapse Analytics'te , , has_compile_replay_scriptis_optimized_plan_forcing_disabledplan_type, sütunlarının plan_type_desckullanılması, desteklenmedikleri için bir Invalid Column Name hatayla sonuçlanır. Azure Synapse Analytics'te nasıl kullanılacağına ilişkin bir örnek için bkz. sys.query_store_plan.
Zorlama sınırlamalarını planlama
Sorgu Deposu'nun belirli yürütme planını kullanmak için Sorgu İyileştiricisi'ni zorunlu kılma mekanizması vardır. Ancak, bir planın uygulanmasını önleyebilecek bazı sınırlamalar vardır.
İlk olarak, plan aşağıdaki yapıları içeriyorsa:
- Toplu deyim ekleme
- Dış tablo başvurusu
- Dağıtılmış sorgu veya tam metin işlemleri
- Elastik sorguların kullanımı
- Dinamik veya tuş kümesi imleçleri
- Geçersiz yıldız birleştirme belirtimi
Uyarı
Azure SQL Veritabanı ve SQL Server 2019 ve sonraki derleme sürümleri, statik ve ileriye doğru imleçler için zorlama planını destekler.
İkincisi, planlayan nesneler artık kullanılabilir olmadığında:
- Veritabanı (planın kaynağı olan veritabanı artık mevcut değilse)
- Dizin (artık yok veya devre dışı)
Son olarak, planın kendisiyle ilgili sorunlar:
- Sorgu için yasal değil
- Sorgu İyileştirici izin verilen işlem sayısını aştı
- Yanlış biçimlendirilmiş plan XML'i
Permissions
İzin gerektirir VIEW DATABASE STATE .
Örnekler
A. SQL Server'ın QDS aracılığıyla bir planı zorlayamama nedenini bulun
ve last_force_failure_reason_desc sütunlarına force_failure_count dikkat edin:
SELECT TOP 1000
p.query_id,
p.plan_id,
p.last_force_failure_reason_desc,
p.force_failure_count,
p.last_compile_start_time,
p.last_execution_time,
q.last_bind_duration,
q.query_parameterization_type_desc,
q.context_settings_id,
c.set_options,
c.STATUS
FROM sys.query_store_plan p
INNER JOIN sys.query_store_query q
ON p.query_id = q.query_id
INNER JOIN sys.query_context_settings c
ON c.context_settings_id = q.context_settings_id
LEFT JOIN sys.query_store_query_text t
ON q.query_text_id = t.query_text_id
WHERE p.is_forced_plan = 1
AND p.last_force_failure_reason != 0;
B. Azure Synapse Analytics'te sorgu planı sonuçlarını görüntüleme sorgusu
Azure Synapse Analytics'teki Sorgu Deposu'nda en son 100 yürütme planını bulmak için aşağıdaki örnek sorguyu kullanın.
SELECT TOP 100
plan_id,
query_id,
plan_group_id,
engine_version,
compatibility_level,
query_plan_hash,
query_plan,
is_online_index_plan,
is_trivial_plan,
is_parallel_plan,
is_forced_plan,
is_natively_compiled,
force_failure_count,
last_force_failure_reason,
last_force_failure_reason_desc,
count_compiles,
initial_compile_start_time,
last_compile_start_time,
last_execution_time,
avg_compile_duration,
last_compile_duration,
plan_forcing_type,
plan_forcing_type_desc
FROM sys.query_store_plan
ORDER BY last_execution_time DESC;
İlgili içerik
- Sorgu Deposu’nu kullanarak performansı izleme
- sys.database_query_store_options (Transact-SQL)
- sys.query_context_settings (Transact-SQL)
- sys.query_store_query (Transact-SQL)
- sys.query_store_query_text (Transact-SQL)
- sys.query_store_runtime_stats (Transact-SQL)
- sys.query_store_wait_stats (Transact-SQL)
- sys.query_store_runtime_stats_interval (Transact-SQL)
- Sistem kataloğu görünümleri (Transact-SQL)
- Sorgu Deposu saklı yordamları (Transact-SQL)