Aracılığıyla paylaş


sys.dm_exec_query_profiles (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Sorgu yürütülürken gerçek zamanlı sorgu ilerlemesini izler. Örneğin, bu DMV'yi kullanarak sorgunun hangi kısmının yavaş çalıştığını belirleyin. Bu DMV'yi, açıklama alanında belirtilen sütunları kullanarak diğer sistem DMV'leriyle birleştirin. Ya da bu DMV'yi zaman damgası sütunlarını kullanarak diğer performans sayacı (örneğin Performance Monitor, xperf) ile birleştirin.

Döndürülen Tablo

Geri dönen sayaçlar, her operatör başına iş parçacığı olarak belirlenir. Sonuçlar dinamiktir ve mevcut seçeneklerin sonuçlarıyla örtüşmez; SET STATISTICS XML ON örneğin sadece sorgu bitince çıktı oluşturur.

Sütun adı Veri türü Description
session_id smallint Bu sorgunun çalıştığı oturumu belirler. Kaynaklar: dm_exec_sessions.session_id.
request_id int Hedef talebi belirler. Referanslar dm_exec_sessions.request_id.
sql_handle varbinary(64) Sorgu içinde olduğu toplu veya depolanmış prosedürü benzersiz şekilde tanımlayan bir tokendır. Referanslar dm_exec_query_stats.sql_handle.
plan_handle varbinary(64) Bir grup için benzersiz şekilde tanımlanan ve planı plan önbelleğinde bulunan ya da şu anda yürütülmekte olan bir grup için sorgu yürütme planını benzersiz şekilde tanımlayan bir tokendır. Kaynaklar: dm_exec_query_stats.plan_handle.
physical_operator_name nvarchar(256) Fiziksel operatör adı.
node_id int Sorgu ağacında bir operatör düğümünü tanımlar.
thread_id int Aynı sorgu operatörü düğümüne ait paralel sorgu için iş parçacıklarını ayırt eder.
görev_adresi varbinary(8) Bu iş parçacığında kullanılan SQLOS görevini belirler. Referanslar dm_os_tasks.task_address.
row_count bigint Operatör tarafından şimdiye kadar geri dönen satır sayısı.
rewind_count bigint Şimdiye kadar geri sarma sayısı.
rebind_count bigint Şimdiye kadar yeniden bağlanma sayısı.
end_of_scan_count bigint Şu ana kadar yapılan taramaların sayısı.
estimate_row_count bigint Tahmini sıra sayısı. Gerçek row_count ile estimated_row_count karşılaştırmak faydalı olabilir.
first_active_time bigint Operatörün ilk çağrıldığı milisaniye cinsinden olan zaman.
last_active_time bigint Operatörün son çağrıldığı zaman, milisaniye cinsinden.
open_time bigint Açık olduğunda zaman damgası (milisaniyeler cinsinden).
first_row_time bigint İlk sıra açıldığında zaman damgası (milisaniyeler cinsinden).
last_row_time bigint Son satırın açıldığı zaman damgası (milisaniyeler cinsinden).
close_time bigint Yakın olduğunda zaman damgası (milisaniye cinsinden).
geçen_zaman_ms bigint Hedef düğümün şimdiye kadar yaptığı işlemlerin kullandığı toplam geçen zaman (milisaniye cinsinden).
cpu_time_ms bigint Hedef düğümün işlemlerinin şimdiye kadar kullandığı toplam CPU süresi (milisaniye cinsinden).
veritabanı_kimlik smallint Okuma ve yazma işlemlerinin yapıldığı nesneyi içeren veritabanının kimliği.
object_id int Okuma ve yazma işlemlerinin yapıldığı nesnenin tanımlayıcısı. Referanslar sys.objects.object_id.
index_id int Satır kümesinin açıldığı indeks (varsa) bu durum.
scan_count bigint Şu ana kadar yapılan tablo/indeks tarama sayısı.
logical_read_count bigint Şimdiye kadar mantıklı okuma sayısı.
physical_read_count bigint Şu ana kadar yapılan fiziksel okuma sayısı.
read_ahead_count bigint Şimdiye kadar yapılan ileriye okuma sayısı.
write_page_count bigint Dökülme nedeniyle şu ana kadar sayfa yazma sayısı.
lob_logical_read_count bigint Şu ana kadar LOB mantıklı okuma sayısı.
lob_physical_read_count bigint Şimdiye kadar LOB fiziksel okuma sayısı.
lob_read_ahead_count bigint Şimdiye kadar LOB okuma sayısı.
segment_read_count int Şu ana kadar öne okunan segment sayısı.
segment_skip_count int Şimdiye kadar atlanan bölüm sayısı.
actual_read_row_count bigint Kalıntı önlem uygulanmadan önce operatör tarafından okunan satır sayısı.
estimated_read_row_count bigint Şunlar için geçerlidir: SQL Server 2016 (13.x) SP1 ile başlayacak.
Kalıntı önlem uygulanmadan önce operatör tarafından okunacağı tahmin edilen satır sayısı.

Genel Açıklamalar

Eğer sorgu planı düğümünde hiç I/O yoksa, tüm G/Ç ile ilgili sayaçlar NULL olarak ayarlanır.

Bu DMV tarafından bildirilen I/O ile ilgili sayaçlar, aşağıdaki iki şekilde bildirilenlerden daha ayrıntılı SET STATISTICS IO olarak sunulur:

  • SET STATISTICS IO Tüm G/O için sayaçları bir tabloya gruplar. Bu DMV ile, tabloya I/O yapan sorgu planındaki her düğüm için ayrı sayaçlar elde edeceksiniz.

  • Eğer paralel tarama varsa, bu DMV taramada çalışan her paralel iş parçacığı için sayaçları raporlar.

SQL Server 2016 (13.x) SP1 ile başlayarak, standart sorgu yürütme istatistikleri profilleme altyapısı , hafif bir sorgu yürütme istatistiği profilleme altyapısıyla yan yana mevcuttur. SET STATISTICS XML ON ve SET STATISTICS PROFILE ON her zaman standart sorgu yürütme istatistikleri profilleme altyapısını kullanın. Doldurulması için sys.dm_exec_query_profiles sorgu profilleme altyapılarından biri etkinleştirilmelidir. Daha fazla bilgi için bkz. Sorgu Profili Oluşturma Altyapısı.

Uyarı

İncelenen sorgu, sorgu profilleme altyapısı etkinleştirildikten sonra başlamalıdır; sorgu başladıktan sonra etkinleştirilmesi, 'de sys.dm_exec_query_profilessonuç vermeyecektir. Sorgu profilleme altyapılarının nasıl etkinleştirileceği hakkında daha fazla bilgi için Sorgu Profilleme Altyapısı'na bakınız.

Permissions

  • SQL Server ve Azure SQL Managed Instance için, veritabanı rolünün db_owner izni ve üyeliği gerektirirVIEW DATABASE STATE.
  • Azure SQL Database Premium Tiers'te, veritabanında izin gerektirir VIEW DATABASE STATE .
  • Azure SQL Database Basic, S0 ve S1 hizmet amaçlarında ve elastik havuzlardaki veritabanları için sunucu admin hesabı veya Microsoft Entra admin hesabı gereklidir. Diğer tüm SQL Veritabanı hizmet hedeflerinde, VIEW DATABASE STATE izin veritabanında gereklidir.

SQL Server 2022 ve üzeri için izinler

Veritabanında VERITABANı PERFORMANS DURUMUNU GÖRÜNTÜLE izni gerektirir.

Örnekler

Adım 1: Analiz edeceğiniz sorguyu çalıştırmayı planladığınız bir oturuma sys.dm_exec_query_profilesgiriş yapın. Profilleme SET STATISTICS PROFILE ONsorgusunu yapılandırmak için . Sorguunuzu aynı oturumda çalıştırın.

--Configure query for profiling with sys.dm_exec_query_profiles  
SET STATISTICS PROFILE ON;  
GO  

--Or enable query profiling globally under SQL Server 2016 SP1 or above (not needed in SQL Server 2019)  
DBCC TRACEON (7412, -1);  
GO 
  
--Next, run your query in this session, or in any other session if query profiling has been enabled globally 

Adım 2: Sorgu çalıştığı oturumdan farklı olan ikinci bir oturuma giriş yapın.

Aşağıdaki ifade, şu anda oturum 54'te çalışan sorgu tarafından kaydedilen ilerlemeyi özetlemektedir. Bunu yapmak için, her düğüm için tüm iş parçacıklarından toplam çıktı satırlarının toplam sayısını hesaplar ve bunu o düğüm için tahmini çıktı satırları sayısıyla karşılaştırır.

--Run this in a different session than the session in which your query is running. 
--Note that you may need to change session id 54 below with the session id you want to monitor.
SELECT node_id,physical_operator_name, SUM(row_count) row_count, 
  SUM(estimate_row_count) AS estimate_row_count, 
  CAST(SUM(row_count)*100 AS float)/SUM(estimate_row_count)  
FROM sys.dm_exec_query_profiles   
WHERE session_id=54
GROUP BY node_id,physical_operator_name  
ORDER BY node_id;  

Ayrıca Bkz.

Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)
Yürütmeyle İlgili Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)