Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai Platform System (PDW)
SQL adatbázis a Microsoft Fabric-ben
Ütemezőnként egy sort ad vissza az SQL Serveren, ahol minden ütemező egy egyéni processzorhoz van hozzárendelve. Ezzel a nézetben figyelheti az ütemező állapotát, vagy azonosíthatja az elszabadult feladatokat. További információért az ütemezőkről lásd a Thread és Task Architecture útmutatót.
Megjegyzés:
Ha ezt Azure Synapse Analytics vagy Analytics Platform System (PDW) néven nevezzük, használd a sys.dm_pdw_nodes_os_schedulers 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 |
|---|---|---|
| scheduler_address | varbinary(8) | Az ütemező memóriacíme. Nem lehet null értékű. |
| parent_node_id | int | Az ütemező tartozó csomópont azonosítója, más néven a szülőcsomópont. Ez egy nem egységes memóriahozzáférési (NUMA) csomópontot képvisel. Nem lehet null értékű. |
| ütemező_azonosító | int | Az időzítő azonosítója. Minden rendszeres lekérdezéshez használt ütemező azonosító száma kevesebb, mint 1048576. Azokat az ütemezőket, amelyek azonosítója nagyobb, mint 1048576 vagy egyenlő, az SQL Server belsőleg használja, például a dedikált adminisztrátori kapcsolat-ütemezőt. Nem lehet null értékű. |
| cpu_id | smallint | CPU azonosító az ütemezőhöz van rendelve. Nem lehet null értékű. Megjegyzés: a 255 nem jelez affinitást, mint az SQL Server 2005 (9.x) esetében. További affinitásért lásd sys.dm_os_threads (Transact-SQL) oldalt. |
| állapot | nvarchar(60) | Jelzi az időzítő állapotát. Az alábbi értékek egyike lehet: - REJTETT ONLINE - REJTETT OFFLINE - LÁTHATÓ ONLINE - LÁTHATÓ OFFLINE - LÁTHATÓ ONLINE (DAC) - HOT_ADDED Nem lehet null értékű. A HIDDEN időzítők az adatbázis motorban belül lévő kérések feldolgozására szolgálnak. A VISIBLE ütemezőket használják a felhasználói kérések feldolgozására. Az OFFLINE időszabók olyan processzorokhoz kapcsolódnak, amelyek az affinitásmaszkban offline vannak, ezért nem használják őket kérések feldolgozására. Az ONLINE időszervezők az affinitás maszkban működő processzorokhoz csatlakoznak, és elérhetők a szálak feldolgozására. A DAC azt jelzi, hogy az osztazógép dedikált adminisztrátori kapcsolat alatt fut. A HOT ADDED azt jelzi, hogy az ütemezőket egy forró hozzáadási CPU eseményre válaszul adták be. |
| is_online | bit | Ha az SQL Server csak néhány elérhető processzort használ a szerveren, ez azt jelentheti, hogy egyes ütemezőket olyan processzorokhoz képeznek, amelyek nem az affinitásmaszkban vannak. Ha ez így van, ez az oszlop 0-at ad vissza. Ez az érték azt jelenti, hogy az ütemeztetőt nem használják lekérdezések vagy csomagok feldolgozására. Nem lehet null értékű. |
| is_idle | bit | 1 = Az ütemező üres. Jelenleg egyetlen dolgozó sem jár. Nem lehet null értékű. |
| preemptive_switches_count | int | Hányszor váltottak a dolgozók ezen az ütemezőn preemptív módra. Az SQL Serveren kívüli kód (például kiterjesztett tárolt eljárások és elosztott lekérdezések) végrehajtásához a szálnak a nem megelőző ütemezőn kívül kell futnia. Ehhez a feldolgozó átáll a megelőző módra. |
| context_switches_count | int | Számos kontextusváltás történt ezen az ütemezőn. Nem lehet null értékű. Ahhoz, hogy más dolgozók is tudhassanak futni, a jelenlegi dolgozónak le kell adnia az ütemező vagy a kontextus átváltásának irányítását. Jegyzet: Ha egy dolgozó megadja az ütemezőt, és bekerül a futtatható sorba, majd nem talál más munkást, akkor a dolgozó magát választja. Ebben az esetben a context_switches_count nem frissül, de a yield_count frissül. |
| idle_switches_count | int | Hányszor várt az időpont egyeztető egy eseményre tétlen állapotban. Ez az oszlop hasonló a context_switches_count-hez. Nem lehet null értékű. |
| current_tasks_count | int | A jelenlegi feladatok száma, amelyek ehhez az ütemezőhöz kapcsolódnak. Ez a szám a következőket tartalmazza: - Olyan feladatok, amelyek arra várnak, hogy egy dolgozó végrehajtsa őket. - Olyan feladatok, amelyek jelenleg várnak vagy futnak (felfüggesztett vagy FUTTATHATÓ állapotban). Amikor egy feladatot elvégeznek, ez a szám csökken. Nem lehet null értékű. |
| runnable_tasks_count | int | Azoknak a dolgozóknak a száma, akiknek feladatok vannak kijelölve, és akik a futható sorban várnak. Nem lehet null értékű. |
| current_workers_count | int | A dolgozók száma, akik ehhez az ütemezőhöz tartoznak. Ez a szám tartalmazza azokat a munkákat, akiknek nincs feladatuk. Nem lehet null értékű. |
| active_workers_count | int | Hány aktív dolgozó. Egy aktív dolgozó soha nem preemptív, hozzá kell kötnie egy feladatot, és vagy fut, futható, vagy felfüggesztett. Nem lehet null értékű. |
| work_queue_count | bigint | A függőben lévő feladatok száma. Ezek a feladatok arra várnak, hogy a dolgozó felvegye őket. Nem lehet null értékű. |
| pending_disk_io_count | int | A váratlan I/O-k száma, amelyek befejezésre várnak. Minden ütemezőnek van egy listája a függőben lévő I/O-król, amelyeket minden kontextusváltásnál ellenőriznek, hogy elkészültek-e a folyamatok. A szám nő, amikor a kérést beillesztjük. Ez a szám csökken, amikor a kérés befejeződik. Ez a szám nem jelzi az I/O-k állapotát. Nem lehet null értékű. |
| load_factor | int | Belső érték, amely jelzi az észlelt terhelést ezen az ütemezőn. Ezt az értéket arra használják, hogy meghatározzák, hogy új feladatot kell betenni erre az ütemezőre vagy egy másik ütemezőre. Ez az érték akkor hasznos hibakeresésben, amikor úgy tűnik, hogy az ütemezők nem egyenletesen töltődnek be. Az útvonalválasztási döntést az ütemező terhelése alapján hozzák meg. Az SQL Server emellett csomópontokból és ütemezőkből álló terhelési tényezőt is használ, hogy meghatározza, melyik hely megszerezhető erőforrások megszerzéséhez. Amikor egy feladatot sorba állítunk, a terhelési tényező nő. Amikor egy feladatot elvégeznek, a terhelési tényező csökken. A terhelési tényezők használata segít az SQL Server OS számára jobban kiegyensúlyozni a munkaterhelést. Nem lehet null értékű. |
| yield_count | int | Belső érték, amelyet az ütemező előrehaladásának jelezésére használnak. Ezt az értéket az Ütemező Monitor használja annak meghatározására, hogy az ütemezőn lévő dolgozó nem enged-e meg időben más dolgozóknak. Ez az érték nem jelzi, hogy a dolgozó vagy a feladat új munkássá vált. Nem lehet null értékű. |
| last_timer_activity | bigint | A CPU tick-ekben az utolsó alkalom, amikor az ütemező ellenőrizte az időzítő sorát. Nem lehet null értékű. |
| failed_to_create_worker | bit | Ha ezen az ütemezőn nem lehetett új dolgozót létrehozni, állítsuk 1-re. Ez általában memóriakorlátok miatt fordul elő. Null értékű. |
| active_worker_address | varbinary(8) | Az aktív dolgozó memóriacíme. Null értékű. További információért lásd sys.dm_os_workers (Transact-SQL). |
| memory_object_address | varbinary(8) | Az ütemező memóriaobjektum memóriacíme. Nem NULLÁLHATÓ. |
| task_memory_object_address | varbinary(8) | A feladatmemória objektum memóriacíme. Nem lehet null értékű. További információért lásd sys.dm_os_memory_objects (Transact-SQL). |
| quantum_length_us | bigint | Csak tájékoztatási célokra van meghatározva. Nem támogatott. A jövőbeli kompatibilitás nem garantált. Feltárja az SQLOS által használt ütemező kvantumot. |
| total_cpu_usage_ms | bigint |
Érvényes: SQL Server 2016 (13.x) és újabb verziókra Az ütemező által fogyasztott teljes CPU, amelyet nem preemptiós dolgozók jelentenek. Nem lehet null értékű. |
| total_cpu_idle_capped_ms | bigint | Csak tájékoztatási célokra van meghatározva. Nem támogatott. A jövőbeli kompatibilitás nem garantált. A Service Level Objective alapján korlátozott szabályozást jelöl, az SQL Server nem Azure verzióinál mindig 0 lesz. Null értékű. |
| total_scheduler_delay_ms | bigint |
Érvényes: SQL Server 2016 (13.x) és újabb verziókra Az idő, ahogy egy dolgozó kicserél és egy másik bevált. Okozhatja, hogy preemptív dolgozók késleltetik a következő nem preemptív munkatárs ütemezését, vagy az operációs rendszer más folyamatokból származó ütemezési szálakat is elkülöníti. Nem lehet null értékű. |
| ideal_workers_limit | int |
Érvényes: SQL Server 2019 (15.x) és újabb verziók Ideális esetben hány dolgozó kellene szerepelnie az ütemezőn? Ha a jelenlegi dolgozók kiegyensúlyozatlan munkaterhelés miatt túllépik a határt, amikor tétlenné válnak, akkor csökkentik őket. Nem lehet null értékű. |
| 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ó. |
Permissions
Az SQL Serveren és a felügyelt SQL-példányon VIEW SERVER STATE engedély szükséges.
Az SQL Database Alapszintű, S0és S1 szolgáltatás célkitűzésein, valamint rugalmas készletekbenlévő adatbázisok esetében a kiszolgálói rendszergazdai fiókra, a Microsoft Entra rendszergazdai fiókra vagy a ##MS_ServerStateReader##kiszolgálói szerepkör tagságára van szükség. Az SQL Database szolgáltatás minden más célkitűzéséhez vagy az adatbázis VIEW DATABASE STATE engedélyére, vagy a ##MS_ServerStateReader## kiszolgálói szerepkör tagságára van szükség.
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
A. Rejtett és nem rejtett időzítők monitorozása
A következő lekérdezés az SQL Server dolgozók és feladatok állapotát adja ki minden ütemezőn. Ezt a lekérdezést egy olyan számítógépes rendszeren hajtották végre, amely a következőket tartalmazza:
Két processzor (CPU)
Két (NUMA) csomópont
Egy CPU minden NUMA node
Affinitás maszk beállítása .
0x03
SELECT
scheduler_id,
cpu_id,
parent_node_id,
current_tasks_count,
runnable_tasks_count,
current_workers_count,
active_workers_count,
work_queue_count
FROM sys.dm_os_schedulers;
Itt van az eredmények összessége.
scheduler_id cpu_id parent_node_id current_tasks_count
------------ ------ -------------- -------------------
0 1 0 9
257 255 0 1
1 0 1 10
258 255 1 1
255 255 32 2
runnable_tasks_count current_workers_count
-------------------- ---------------------
0 11
0 1
0 18
0 1
0 3
active_workers_count work_queue_count
-------------------- --------------------
6 0
1 0
8 0
1 0
1 0
A kimenet a következő információkat tartalmazza:
Öt ütemező van. Két ütemező azonosító értéke < 1048576. Az ID >= 1048576 ütemezőket rejtett ütemezőknek nevezik. Az Scheduler
255a dedikált adminisztrátori kapcsolatot (DAC) képviseli. Instanciónként egy DAC időzítő van. Memórianyomást koordináló erőforrás-monitorok az ütemezőt257és ütemezőt258használnak, egy NUMA csomópontonként egyetA kimenetben 23 aktív feladat található. Ezek a feladatok magukban foglalják a felhasználói kéréseket és az SQL Server által indított erőforrás-kezelési feladatokat is. Az SQL Server feladatai közé tartozik a RESOURCE MONITOR (egy NUMA csomópontonként), LAZY WRITER (egy NUMA csomópontonként), LOCK MONITOR, CHECKPOINT és LOG WRITER.
A NUMA csomópontot
0a CPU-hoz1, a NUMA csomópontot1pedig a CPU-hoz0jelölik. Az SQL Server általában egy NUMA csomóponton indul, nem a 0 csomóponton.A
runnable_tasks_countvisszatéréskor0nincsenek aktívan futó feladatok. Azonban létezhetnek aktív ülések.A DAC-ot képviselő ütemező
255dolgozók3is hozzátartoznak. Ezek a dolgozók az SQL Server indításánál vannak kiosztva, és nem változnak. Ezeket a munkásokat csak DAC lekérdezések feldolgozására használják. A két feladat ezen az ütemezőn egy kapcsolatkezelőt és egy tétlen munkást jelent.active_workers_countminden olyan munkás, akinek hozzárendelt feladata van, és nem preempáló üzemmódban fut. Néhány feladat, például a hálózati hallgatók, preempál ütemezés alatt futnak.A rejtett időzítők nem dolgozzák fel a tipikus felhasználói kéréseket. A DAC ütemező a kivétel. Ennek a DAC ütemezőnek egy szála van a kérések feldolgozására.
B. Nem rejtett időzítők monitorozása egy forgalmas rendszerben
A következő lekérdezés mutatja a nehezen betöltött nem rejtett ütemezők állapotát, ahol több kérés létezik, mint amennyit a rendelkezésre álló munkások kezelnek. Ebben a példában 256 dolgozó kapott feladatokat. Néhány feladat arra vár, hogy egy dolgozónak adják a feladatot. Az alacsonyabb futtatható szám azt jelenti, hogy több feladat vár egy erőforrásra.
Megjegyzés:
A munkavállalók állapotát sys.dm_os_workers lekérdezéssel találhatod meg. További információért lásd sys.dm_os_workers (Transact-SQL).
Íme a kérdés:
SELECT
scheduler_id,
cpu_id,
current_tasks_count,
runnable_tasks_count,
current_workers_count,
active_workers_count,
work_queue_count
FROM sys.dm_os_schedulers
WHERE scheduler_id < 255;
Itt van az eredmények összessége.
scheduler_id current_tasks_count runnable_tasks_count
------------ ------------------- --------------------
0 144 0
1 147 1
current_workers_count active_workers_count work_queue_count
--------------------- -------------------- --------------------
128 125 16
128 126 19
Összehasonlításképpen a következő eredmény több futtatható feladatot mutat, ahol nincs feladat a munkás megszerzésére. Ez work_queue_count0 mindkét időpont-beosztó számára van.
scheduler_id current_tasks_count runnable_tasks_count
------------ ------------------- --------------------
0 107 98
1 110 100
current_workers_count active_workers_count work_queue_count
--------------------- -------------------- --------------------
128 104 0
128 108 0
Lásd még
SQL Server operációs rendszerhez kapcsolódó dinamikus felügyeleti nézetek (Transact-SQL)