Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-databas i Microsoft Fabric
Returnerar en rad per schemaläggare i SQL Server där varje schemaläggare mappas till en enskild processor. Använd den här vyn för att övervaka status för en schemaläggare eller för att identifiera okontrollerade uppgifter. För mer information om schemaläppare, se Tråd- och uppgiftsarkitekturguiden.
Anmärkning
För att kalla detta från Azure Synapse Analytics eller Analytics Platform System (PDW), använd namnet sys.dm_pdw_nodes_os_schedulers. Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.
| Kolumnnamn | Datatyp | Description |
|---|---|---|
| scheduler_address | varbinary(8) | Minnesadressen till schemaläggaren. Får inte vara ogiltig. |
| parent_node_id | int | ID:t för noden som schemaläggaren tillhör, även kallat föräldranoden. Detta representerar en icke-uniform minnesåtkomstnod (NUMA). Får inte vara ogiltig. |
| schemaläggar-id | int | ID för schemaläggaren. Alla schemaläggare som används för att köra vanliga frågor har ID-nummer mindre än 1048576. De schemaläggare som har ID större än eller lika med 1048576 används internt av SQL Server, såsom den dedikerade administratörsanslutningsschemaläggaren. Får inte vara ogiltig. |
| cpu_id | smallint | CPU-ID tilldelat schemaläggaren. Får inte vara ogiltig. Notera: 255 indikerar inte någon affinitet som det gjorde i SQL Server 2005 (9.x). Se sys.dm_os_threads (Transact-SQL) för ytterligare affinitetsinformation. |
| status | nvarchar(60) | Indikerar statusen för schemaläggaren. Kan vara något av följande värden: - DOLD ONLINE - DOLD OFFLINE - SYNLIGT ONLINE - SYNLIGT OFFLINE - VISIBLE ONLINE (DAC) - HOT_ADDED Får inte vara ogiltig. DOLDA schemaläggare används för att behandla förfrågningar som är interna i databasmotorn. VISIBLE-schemaläggare används för att behandla användarförfrågningar. OFFLINE-schemaläggare mappar till processorer som är offline i affinitetsmasken och används därför inte för att behandla några förfrågningar. ONLINE-schemaläggare mappar till processorer som är online i affinitetsmasken och är tillgängliga för att bearbeta trådar. DAC indikerar att schemaläggaren körs under en dedikerad administratörsanslutning. HOT ADDED indikerar att schemaläggarna lades till som svar på en hot add CPU-händelse. |
| is_online | bit | Om SQL Server är konfigurerad att endast använda några av de tillgängliga processorerna på servern kan denna konfiguration innebära att vissa schemaläggare mappas till processorer som inte ingår i affinitetsmasken. Om så är fallet returnerar denna kolumn 0. Detta värde innebär att schemaläpparen inte används för att bearbeta frågor eller batcher. Får inte vara ogiltig. |
| is_idle | bit | 1 = Schemaläggaren är inaktiv. Inga arbetare är i drift just nu. Får inte vara ogiltig. |
| preemptive_switches_count | int | Antal gånger som arbetare på denna schemaläggare har bytt till förebyggande läge. För att köra kod utanför SQL Server (till exempel utökade lagrade procedurer och distribuerade frågor) måste en tråd köras utanför den icke-förebyggande schemaläggarens kontroll. För att göra detta växlar en arbetare till förebyggande läge. |
| context_switches_count | int | Antal kontextbyten som har skett på denna schemaläggare. Får inte vara ogiltig. För att tillåta andra arbetare att köra måste den nuvarande arbetande arbetaren släppa kontrollen över schemaläggaren eller byta kontext. Not: Om en arbetare ger schemaläggaren och lägger sig själv i den körbara kön och sedan inte hittar några andra arbetare, väljer arbetaren sig själv. I detta fall uppdateras inte context_switches_count, men yield_count uppdateras. |
| idle_switches_count | int | Antal gånger har schemaläggaren väntat på ett evenemang medan den varit inaktiv. Denna kolumn liknar context_switches_count. Får inte vara ogiltig. |
| current_tasks_count | int | Antal aktuella uppgifter som är kopplade till denna schemaläggare. Denna räkning inkluderar följande: - Uppgifter som väntar på att en arbetare ska utföra dem. - Uppgifter som för närvarande väntar eller körs (i SUSPENDERAT eller RUNNBART). När en uppgift är slutförd minskas denna räkning. Får inte vara ogiltig. |
| runnable_tasks_count | int | Antal arbetare, med uppgifter tilldelade dem, som väntar på att schemaläggas i den körbara kön. Får inte vara ogiltig. |
| current_workers_count | int | Antal arbetare som är kopplade till denna schemaläggare. Denna räkning inkluderar arbetare som inte tilldelats någon uppgift. Får inte vara ogiltig. |
| active_workers_count | int | Antal aktiva arbetare. En aktiv arbetare är aldrig preemptiv, måste ha en tillhörande uppgift och är antingen körbar, körbar eller avstängd. Får inte vara ogiltig. |
| work_queue_count | bigint | Antal uppgifter i den väntande kön. Dessa uppgifter är att vänta på att en arbetare ska hämta dem. Får inte vara ogiltig. |
| pending_disk_io_count | int | Antal pågående I/O:n som väntar på att slutföras. Varje schemaläggare har en lista över väntande I/O:er som kontrolleras för att avgöra om de har slutförts varje gång det sker ett kontextbyte. Antalet ökar när förfrågan infogas. Denna räkning minskas när begäran är slutförd. Detta nummer anger inte tillståndet för I/O:na. Får inte vara ogiltig. |
| load_factor | int | Internt värde som anger den upplevda belastningen på denna schemaläggare. Detta värde används för att avgöra om en ny uppgift ska läggas till denna schemaläggare eller en annan schemaläggare. Detta värde är användbart för felsökning när det verkar som att schemaläggare inte är jämnt belastade. Routingbeslutet fattas baserat på belastningen på schemaläggaren. SQL Server använder också en belastningsfaktor för noder och schemaläggare för att hjälpa till att bestämma den bästa platsen att skaffa resurser. När en uppgift är i kö ökar belastningsfaktorn. När en uppgift är slutförd minskar belastningsfaktorn. Att använda belastningsfaktorerna hjälper SQL Server OS att balansera arbetsbelastningen bättre. Får inte vara ogiltig. |
| yield_count | int | Internt värde som används för att indikera framsteg på denna schemaläggare. Detta värde används av schemaläggarövervakaren för att avgöra om en arbetare på schemaläggaren inte ger vika för andra arbetare i tid. Detta värde indikerar inte att arbetaren eller uppgiften har övergått till en ny arbetstagare. Får inte vara ogiltig. |
| last_timer_activity | bigint | I CPU-ticks kontrollerades den senaste gången schemaläggaren kontrollerade av schemaläggaren. Får inte vara ogiltig. |
| failed_to_create_worker | bit | Sätt till 1 om en ny arbetare inte kunde skapas i denna schemaläggare. Detta sker vanligtvis på grund av minnesbegränsningar. Kan inte vara null. |
| active_worker_address | varbinary(8) | Minnesadressen till den arbetare som för närvarande är aktiv. Kan inte vara null. För mer information, se sys.dm_os_workers (Transact-SQL). |
| memory_object_address | varbinary(8) | Minnesadressen till schemaläpparens minnesobjekt. Inte NULLBAR. |
| task_memory_object_address | varbinary(8) | Minnesadressen till uppgiftsminnesobjektet. Får inte vara ogiltig. För mer information, se sys.dm_os_memory_objects (Transact-SQL). |
| quantum_length_us | bigint | Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte. Exponerar schemaljar-kvanten som används av SQLOS. |
| total_cpu_usage_ms | bigint |
Gäller för: SQL Server 2016 (13.x) och senare Total CPU förbrukad av denna schemaläggare enligt rapportering av icke-preemptiva arbetare. Får inte vara ogiltig. |
| total_cpu_idle_capped_ms | bigint | Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte. Indikerar strypning baserat på Service Level Objective, kommer alltid att vara 0 för icke-Azure-versioner av SQL Server. Kan inte vara null. |
| total_scheduler_delay_ms | bigint |
Gäller för: SQL Server 2016 (13.x) och senare Tiden mellan att en arbetare byter ut och en annan byter in. Kan orsakas av att preemptiva arbetare fördröjer schemaläggningen av nästa icke-preemptiva arbetare, eller på grund av att OS-schemaläggningstrådar från andra processer. Får inte vara ogiltig. |
| ideal_workers_limit | int |
Gäller för: SQL Server 2019 (15.x) och senare Hur många arbetare bör helst finnas på schemaläggningsprogrammet. Om de nuvarande arbetarna överskrider gränsen på grund av obalanserad arbetsbelastning, kommer de att trimmas när de blir inaktiva. Får inte vara ogiltig. |
| pdw_node_id | int |
gäller för: Azure Synapse Analytics, Analytics Platform System (PDW) Identifieraren för noden som den här fördelningen är på. |
Permissions
På SQL Server och SQL Managed Instance kräver VIEW SERVER STATE behörighet.
I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE STATE behörighet för databasen eller medlemskap i ##MS_ServerStateReader## serverrollen.
Behörigheter för SQL Server 2022 och senare
Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.
Examples
A. Övervakning av dolda och icke-dolda schemaläggare
Följande fråga ger tillstånd för arbetare och uppgifter i SQL Server över alla schemaläggare. Denna fråga utfördes på ett datorsystem som har följande:
Två processorer (CPU:er)
Två (NUMA) noder
En CPU per NUMA-nod
Affinitetsmask satt till
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;
Här är resultatet.
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
Utdata ger följande information:
Det finns fem schemaläggare. Två schemaläggare har ett ID-värde < 1048576. Schemaläggare med ID >= 1048576 kallas dolda schemaläggare. Schemaläggaren
255representerar den dedikerade administratörsanslutningen (DAC). Det finns en DAC-schemaläppare per instans. Resursövervakare som koordinerar minnestryck använder schemaläggare257och schemaläggare258, en per NUMA-nodDet finns 23 aktiva uppgifter i utdatan. Dessa uppgifter inkluderar användarförfrågningar utöver resurshanteringsuppgifter som har startats av SQL Server. Exempel på SQL Server-uppgifter är RESOURCE MONITOR (en per NUMA-nod), LAZY WRITER (en per NUMA-nod), LOCK MONITOR, CHECKPOINT och LOG WRITER.
NUMA-noden
0mappas till CPU1och NUMA-noden1mappas till CPU0. SQL Server startar vanligtvis på en NUMA-nod som inte är nod 0.Med
runnable_tasks_countåterkommande0, finns inga aktivt igångande uppgifter. Dock kan aktiva sessioner finnas.Schemaläggaren
255som representerar DAC har3arbetare kopplade till sig. Dessa arbetare tilldelas vid SQL Server-start och ändras inte. Dessa arbetare används endast för att bearbeta DAC-frågor. De två uppgifterna i denna schemaläggare representerar en anslutningshanterare och en inaktiv arbetare.active_workers_countrepresenterar alla arbetare som har tillhörande uppgifter och körs i icke-preemptivt läge. Vissa uppgifter, såsom nätverkslyssnare, körs under preemptiv schemaläggning.Dolda schemaläggare behandlar inte typiska användarförfrågningar. DAC-schemaläggaren är undantaget. Denna DAC-schemaläggare har en tråd för att behandla förfrågningar.
B. Övervakning av icke-dolda schemaläggare i ett upptaget system
Följande fråga visar tillståndet för tungt belastade icke-dolda schemaläggare, där fler förfrågningar finns än vad som kan hanteras av tillgängliga arbetare. I detta exempel tilldelas 256 arbetare uppgifter. Vissa uppgifter är att vänta på en uppgift till en arbetare. Lägre körbar körning innebär att flera uppgifter väntar på en resurs.
Anmärkning
Du kan ta reda på arbetstagarnas tillstånd genom att fråga sys.dm_os_workers. För mer information, se sys.dm_os_workers (Transact-SQL).
Här är frågan:
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;
Här är resultatet.
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
Som jämförelse visar följande resultat flera körbara uppgifter där ingen uppgift väntar på att få en arbetare. Det gäller work_queue_count0 båda schemaläggarna.
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
Se även
SQL Server-operativsystemrelaterade dynamiska hanteringsvyer (Transact-SQL)