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
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft 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 IOTü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_ownerizni 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 STATEizin 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)