Megosztás a következőn keresztül:


sys.dm_os_workers (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Minden dolgozónak egy sort ad vissza a rendszerben. További információért a dolgozókról lásd a Thread és Task Architecture útmutatót.

Megjegyzés:

Azure Synapse Analytics vagy Analytics Platform System (PDW) néven használjuk a sys.dm_pdw_nodes_os_workers nevet. Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

Oszlop név Adattípus Description
munkavállaló_címe varbinary(8) A dolgozó emlékcíme.
állapot int Csak belső használatra.
is_preemptive bit 1 = A munkavállaló preemptív ütemezéssel működik. Bármely munkatárs, aki külső kódot futtat, preemptív ütemezéssel fut.
is_fiber bit 1 = A munkás könnyű csoportos rendszerrel fut. További információért lásd sp_configure (Transact-SQL).
is_sick bit 1 = A munkás elakad, amikor pörgős zárat próbál elérni. Ha ez a bit be van állítva, az egy gyakran elért objektum elleni vitaproblémára utalhat.
is_in_cc_exception bit 1 = A Worker jelenleg egy nem SQL Server kivételt kezel.
is_fatal_exception bit Meghatározza a munkavállaló halálos kivételt.
is_inside_catch bit 1 = A munkavállaló jelenleg egy kivételt kezel.
is_in_polling_io_completion_routine bit 1 = A dolgozó jelenleg egy I/O befejezési rutint futtat egy függőben lévő I/O számára. További információért lásd sys.dm_io_pending_io_requests (Transact-SQL).
context_switch_count int Hány ütemező kontextuskapcsoló működik, amelyeket ez a dolgozó végez.
pending_io_count int A fizikai I/O-k száma, amelyeket ez a munkás végez.
pending_io_byte_count bigint A dolgozó összes függőben lévő fizikai I/O-jának összes bájtszáma.
pending_io_byte_average int A fizikai I/O-k átlagos bájtszáma ennek a dolgozónak.
wait_started_ms_ticks bigint Az az idő, ms_ticks-ben, amikor ez a munkavállaló FELFÜGGESZTETT állapotba került. Ha ezt az értéket ms_ticks-ből kivonjuk sys.dm_os_sys_info-ben , akkor azt a milliszekundumokat hozzuk vissza, mennyi várakozással a munkás volt.
wait_resumed_ms_ticks bigint Az időpont, ms_ticks-ben, amikor ez a munkás belépett a RUNNABLE állapotba. Ha ezt az értéket ms_ticks-ből kivonjuk sys.dm_os_sys_info-ben , akkor azt adja vissza, hány milliszekundum a dolgozó volt a futtatható sorban.
task_bound_ms_ticks bigint Az adott időpont, ms_ticks egy feladat ehhez a munkáshoz van kötve.
worker_created_ms_ticks bigint Az időpont, ms_ticks amikor egy munkás létrejött.
exception_num int Az utolsó kivétel hibaszáma, amellyel ez a munkás találkozott.
exception_severity int Az utolsó kivétel súlyossága, amivel ez a munkás találkozott.
exception_address varbinary(8) A kódcím, ami kidobta a kivételt
affinitás bigint A munkás szál-affinitása. Megegyezik a szál affinitásával sys.dm_os_threads (Transact-SQL).
state nvarchar(60) Munkás állam. Az alábbi értékek egyike lehet:

INIT = A dolgozó jelenleg inicializálódik.

RUNNING = A Munkás jelenleg vagy nem prepresztíven, vagy preemptive módon működik.

RUNNABLE = A dolgozó készen áll az ütemezőn futásra.

FELFÜGGESZTETT = A munkavállaló jelenleg felfüggesztve van, várva egy eseményt, hogy jelet küldjön neki.
start_quantum bigint Az idő, milliszekundumokban, a jelenlegi munka kezdeténél.
end_quantum bigint Az idő, ezredmásodpercekben, ennek a munkásnak a jelenlegi futamidején vége.
last_wait_type nvarchar(60) Egyfajta utolsó várakozás. A várakozási típusok listájáért lásd sys.dm_os_wait_stats (Transact-SQL).
return_code int Vissza az utolsó várakozás értéke. Az alábbi értékek egyike lehet:

0 =SIKER

3 = HOLTHELYZET

4 = PREMATURE_WAKEUP

258 = IDŐKORLÁT
quantum_used bigint Csak belső használatra.
max_quantum bigint Csak belső használatra.
boost_count int Csak belső használatra.
tasks_processed_count int Hány feladatot dolgozott fel ez a dolgozó.
fiber_address varbinary(8) A munkatárshoz kapcsolódó szál memóriacíme.

NULL = Az SQL Server nincs konfigurálva könnyű poolingra.
feladat cím varbinary(8) Az aktuális feladat memóriacíme. További információért lásd sys.dm_os_tasks (Transact-SQL).
memory_object_address varbinary(8) A munkaadó memóriaobjektum memóriacíme. További információért lásd sys.dm_os_memory_objects (Transact-SQL).
thread_address varbinary(8) A munkatárshoz tartozó szál memóriacíme. További információért lásd sys.dm_os_threads (Transact-SQL).
signal_worker_address varbinary(8) Az utolsó jelző által jelezett dolgozó memóriacíme. További információért lásd: sys.dm_os_workers.
scheduler_address varbinary(8) Az ütemező memóriacíme. További információért lásd sys.dm_os_schedulers (Transact-SQL).
processor_group smallint Tárolja a processzorcsoport-azonosítót, amely ehhez a szálhoz van rendelve.
pdw_node_id int A következővonatkozik: Azure Synapse Analytics, Analytics Platform System (PDW)

Annak a csomópontnak az azonosítója, amelyen ez a disztribúció található.

Megjegyzések

Ha a munka állapota FUT, és a dolgozó nem preempíven fut, akkor a dolgozó cím megegyezik sys.dm_os_schedulers active_worker_address-vel.

Amikor egy eseményre váró munkást jeleznek, a dolgozót a futtatható sor élére helyezik. Az SQL Server lehetővé teszi, hogy ez ezerszer egymás után megtörténjen, majd a munka a sor végére kerül. Egy dolgozót a sor végére helyezve bizonyos teljesítménybeli következményekkel jár.

Permissions

Az SQL Serveren VIEW SERVER STATE engedély szükséges.
SQL Database Premium Tiers-en az adatbázisban szükséges engedély VIEW DATABASE STATE . SQL Database Standard és Basic Tiers esetén szereptagságot vagy Azure Active Directory admin fiókot igényelServer Admin.

Engedélyek az SQL Server 2022-hez és újabb verziókhoz

A KISZOLGÁLÓ TELJESÍTMÉNYÁLLAPOTÁNAK MEGTEKINTÉSE engedélyre van szükség a kiszolgálón.

Példák

Az alábbi lekérdezéssel megtudhatod, mennyi ideje fut egy dolgozó felfüggesztett vagy FUTHATÓ állapotban.

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;  

Itt van az eredmények összessége.

 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  

A kimenetben, amikor w_runnable és w_suspended egyenlőek, ez azt az időt jelenti, amikor a dolgozó FELFÜGGESZTETT állapotban van. Egyébként w_runnable azt az időt jelenti, amelyet a dolgozó a RUNNABLE állapotban tölt. A kimenetben a session 52 milliszekundumig 35,094 tartSUSPENDED.

Lásd még:

SQL Server operációs rendszerhez kapcsolódó dinamikus felügyeleti nézetek (Transact-SQL)
lekérdezésfeldolgozási architektúra útmutatója
Szál- és feladatarchitektúra útmutató