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
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Microsoft Fabric'te SQL Veritabanı
Sistemdeki her çalışan için bir satır döndürür. İşçiler hakkında daha fazla bilgi için Thread and Task Architecture Guide'a bakınız.
Uyarı
Bunu Azure Synapse Analytics veya Analytics Platform System (PDW) olarak adlandırmak için sys.dm_pdw_nodes_os_workers adını kullanın. Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.
| Sütun adı | Veri türü | Description |
|---|---|---|
| çalışan_adresi | varbinary(8) | Çalışanın hafıza adresi. |
| statü | int | Yalnızca iç kullanım. |
| is_preemptive | bit | 1 = Çalışan önleyici zamanlama ile çalışıyor. Harici kod çalıştıran herhangi bir çalışan önemci zamanlama altında çalıştırılır. |
| is_fiber | bit | 1 = İşçi hafif havuzlama ile koşuyor. Daha fazla bilgi için sp_configure (Transact-SQL) bölümüne bakınız. |
| is_sick | bit | 1 = Çalışan spin kilidi elde etmeye çalışırken sıkışıp kalır. Bu bit ayarlanmışsa, bu sık erişilen bir nesnede çatışma sorunu olabilir. |
| is_in_cc_exception | bit | 1 = Worker şu anda SQL Server dışı bir istisna ile ilgilenmektedir. |
| is_fatal_exception | bit | Bu işçinin ölümcül bir istisna alıp almadığını belirtir. |
| is_inside_catch | bit | 1 = Çalışan şu anda bir istisna ile ilgileniyor. |
| is_in_polling_io_completion_routine | bit | 1 = Çalışan şu anda bekleyen bir G/Ç için bir G/Ç tamamlama rutini çalıştırıyor. Daha fazla bilgi için bkz. sys.dm_io_pending_io_requests (Transact-SQL). |
| context_switch_count | int | Bu işçi tarafından gerçekleştirilen zamanlayıcı bağlam anahtarlarının sayısı. |
| pending_io_count | int | Bu çalışan tarafından gerçekleştirilen fiziksel I/O sayısı. |
| pending_io_byte_count | bigint | Bu işçi için bekleyen tüm fiziksel giriş/girişler için toplam bayt sayısı. |
| pending_io_byte_average | int | Bu çalışan için fiziksel giriş/o için ortalama bayt sayısı. |
| wait_started_ms_ticks | bigint | ms_ticks yılında, bu işçinin ASKIYA ALMA durumuna girdiği zaman. Bu değeri ms_ticks'den sys.dm_os_sys_info içinde çıkarsak, işçinin beklediği milisaniye sayısını döndürür. |
| wait_resumed_ms_ticks | bigint | ms_ticks yılında, bu işçi RUNNABLE durumuna girdiğinde. Bu değeri ms_ticks sys.dm_os_sys_info içindeki değerden çıkarmak, çalışanın çalıştırılabilir kuyrakta bulunduğu milisaniye sayısını döndürür. |
| task_bound_ms_ticks | bigint | ms_ticks zamanında, bir görevin bu işçiye bağlı olduğu zaman. |
| worker_created_ms_ticks | bigint | Bir işçinin yaratıldığı zaman ms_ticks. |
| exception_num | int | Bu işçinin karşılaştığı son istisnanın hata numarası. |
| exception_severity | int | Bu işçinin karşılaştığı son istisnanın ciddiyeti. |
| exception_address | varbinary(8) | İstisna atan kod adresi |
| ilgi | bigint | İşçinin iplik yakınlığı. sys.dm_os_threads (Transact-SQL) içindeki ipliğin yakınlığıyla eşleşir. |
| state | nvarchar(60) | İşçi durumu. Aşağıdaki değerlerden biri olabilir: INIT = Işçi şu anda başlatılıyor. KOŞMA = Çalışan şu anda ya önleyici olmayan ya da önleyici olarak çalışıyor. RUNNABLE = Çalışan zamanlayıcıda çalışmaya hazırdır. ASKIYA ALMIŞ = Çalışan şu anda askıya alınmış durumda ve bir olayın sinyal göndermesini bekliyor. |
| start_quantum | bigint | Zaman, milisaniye cinsinden, bu işçinin mevcut çalışmasının başında. |
| end_quantum | bigint | Zaman, milisaniye cinsinden, bu işçinin mevcut süresinin sonunda. |
| son_bekleme_tipi | nvarchar(60) | Son bekleme türü. Bekleme türlerinin listesi için sys.dm_os_wait_stats (Transact-SQL) bölümüne bakınız. |
| return_code | int | Son beklemeden geri değer. Aşağıdaki değerlerden biri olabilir: 0 =BAŞARI 3 = ÇIKIŞ 4 = PREMATURE_WAKEUP 258 = MOLA |
| quantum_used | bigint | Yalnızca iç kullanım. |
| max_quantum | bigint | Yalnızca iç kullanım. |
| boost_count | int | Yalnızca iç kullanım. |
| tasks_processed_count | int | Bu çalışanın işlediği görev sayısı. |
| fiber_address | varbinary(8) | Bu işçinin ilişkilendirildiği fiberin bellek adresi. NULL = SQL Server, hafif havuzlama için yapılandırılmamıştır. |
| görev_adresi | varbinary(8) | Mevcut görevin bellek adresi. Daha fazla bilgi için sys.dm_os_tasks (Transact-SQL) sayfasına bakınız. |
| memory_object_address | varbinary(8) | İşçi bellek nesnesinin bellek adresi. Daha fazla bilgi için sys.dm_os_memory_objects (Transact-SQL) sayfasına bakınız. |
| thread_address | varbinary(8) | Bu işçiyle ilişkili iş parçacığının bellek adresi. Daha fazla bilgi için sys.dm_os_threads (Transact-SQL) bölümüne bakınız. |
| signal_worker_address | varbinary(8) | Bu nesneyi en son işaret eden işçinin bellek adresi. Daha fazla bilgi için bkz. sys.dm_os_workers. |
| scheduler_address | varbinary(8) | Zamanlayıcının bellek adresi. Daha fazla bilgi için sys.dm_os_schedulers (Transact-SQL) bölümüne bakınız. |
| processor_group | smallint | Bu iş parçacığına atanan işlemci grup kimliğini saklar. |
| pdw_node_id | int |
için geçerlidir: Azure Synapse Analytics, Analiz Platformu Sistemi (PDW) Bu dağıtımın üzerinde olduğu düğümün tanımlayıcısı. |
Açıklamalar
Eğer işçi durumu ÇALIŞIYORSA ve işçi önleyici olmayan çalışıyorsa, işçi adresi sys.dm_os_schedulers'daki active_worker_address ile eşleşir.
Bir olay bekleyen bir çalışan sinyal edildiğinde, çalışan çalıştırılabilir kuyruğun başına yerleştirilir. SQL Server bunun bin kez üst üste gerçekleşmesine izin verir ve ardından çalışan kuyruğun sonuna yerleştirilir. Bir çalışanı kuyruğun sonuna taşımak bazı performans etkileri yaratır.
Permissions
SQL Server'da VIEW SERVER STATE izni gerekir.
SQL Veritabanı Premium Katmanlarında, veritabanında izin gerektirir VIEW DATABASE STATE . SQL Veritabanı Standardı ve Temel Katmanlar'da ise rol üyeliği veya bir Azure Active Directory admin hesap gerektirirServer Admin.
SQL Server 2022 ve üzeri için izinler
Sunucuda SUNUCU PERFORMANS DURUMUNU GÖRÜNTÜLE izni gerektirir.
Örnekler
Aşağıdaki sorguyu kullanarak bir çalışanın ne kadar süredir ASKIYA VERİLDİR veya ÇALIŞTIRILABILIR durumda çalıştığını öğrenebilirsiniz.
SELECT
t1.session_id,
CONVERT(varchar(10), t1.status) AS status,
CONVERT(varchar(15), t1.command) AS command,
CONVERT(varchar(10), t2.state) AS worker_state,
w_suspended =
CASE t2.wait_started_ms_ticks
WHEN 0 THEN 0
ELSE
t3.ms_ticks - t2.wait_started_ms_ticks
END,
w_runnable =
CASE t2.wait_resumed_ms_ticks
WHEN 0 THEN 0
ELSE
t3.ms_ticks - t2.wait_resumed_ms_ticks
END
FROM sys.dm_exec_requests AS t1
INNER JOIN sys.dm_os_workers AS t2
ON t2.task_address = t1.task_address
CROSS JOIN sys.dm_os_sys_info AS t3
WHERE t1.scheduler_id IS NOT NULL;
Sonuç kümesi aşağıdadır.
session_id status command worker_state w_suspended w_runnable
---------- ---------- --------------- ------------ ----------- --------------------
4 background LAZY WRITER SUSPENDED 688 688
6 background LOCK MONITOR SUSPENDED 4657 4657
19 background BRKR TASK SUSPENDED 603820344 603820344
14 background BRKR EVENT HNDL SUSPENDED 63583641 63583641
51 running SELECT RUNNING 0 0
2 background RESOURCE MONITO RUNNING 0 603825954
3 background LAZY WRITER SUSPENDED 422 422
7 background SIGNAL HANDLER SUSPENDED 603820485 603820485
13 background TASK MANAGER SUSPENDED 603824704 603824704
18 background BRKR TASK SUSPENDED 603820407 603820407
9 background TRACE QUEUE TAS SUSPENDED 454 454
52 suspended SELECT SUSPENDED 35094 35094
1 background RESOURCE MONITO RUNNING 0 603825954
Çıktıda, w_runnable ve w_suspended eşit olduğunda, bu durum işçinin ASKIYA DURUMUNDA olduğu zamanı temsil eder. Aksi takdirde, w_runnable çalışanın RUNNABLE durumunda harcadığı zamanı temsil eder. Çıkışta oturum 52SUSPENDED milisaniyelerdir 35,094 .
Ayrıca Bkz.
SQL Server İşletim Sistemiyle İlgili Dinamik Yönetim Görünümleri (Transact-SQL)
Sorgu İşleme Mimarisi Kılavuzu
İş Başlığı ve Görev Mimarisi Rehberi