Computerhardware

Holen Sie sich die SQL Server -CPU -Auslastungsabfrage

Die GET SQL Server -CPU -Auslastungsabfrage bietet wertvolle Einblicke in die CPU -Verwendung eines SQL -Servers. Mit der zunehmenden Menge an Daten und der Komplexität der Abfragen ist die Überwachung der CPU -Nutzung für die effiziente Datenbankverwaltung von entscheidender Bedeutung. Mit der Abfrage können Administratoren potenzielle Engpässe identifizieren, die Abfrageleistung optimieren und die reibungslose Funktionsweise des SQL -Servers sicherstellen.

Diese Abfrage wirkt sich erheblich auf die Gesamtleistung eines SQL -Servers aus. Durch die Analyse der CPU-Auslastung können Administratoren mit hoher Gebrauchsfragen identifizieren, Leistungsproblemen beheben und fundierte Entscheidungen treffen, um die Ressourcenzuweisung zu optimieren. Mit genauen CPU -Nutzungsdaten können Administratoren die Serverkapazität proaktiv verwalten, die Antwortzeiten verbessern und die allgemeine Benutzererfahrung verbessern.




Einführung

Die SQL Server -CPU -Auslastung ist ein wichtiger Aspekt, um eine optimale Leistung in jeder SQL Server -Umgebung zu überwachen und zu verwalten. Die CPU ist dafür verantwortlich, Abfragen auszuführen, die Datenverarbeitung zu behandeln und andere Aufgaben auszuführen, die für den Server erforderlich sind. Durch die Überwachung der CPU -Auslastung identifiziert potenzielle Engpässe und ermöglicht zeitnahe Optimierungen. In diesem Artikel werden wir verschiedene SQL Server -CPU -Auslastungsabfragen untersuchen, die wertvolle Einblicke in die Leistung Ihres SQL -Servers liefern können.

1. Abfrage zur CPU -Nutzung nach Datenbank

Wenn Sie sich mit einer Multi-Database-SQL Server-Umgebung befassen, ist es hilfreich, sich in der CPU-Nutzung einzelner Datenbanken zu befassen. Auf diese Weise können Sie feststellen, welche Datenbanken die meisten CPU -Ressourcen konsumieren und möglicherweise ihre Abfragen oder Konfigurationen optimieren.

Um die CPU -Nutzung per Datenbank zu erhalten, können Sie die folgende Abfrage verwenden:

SELECT
    DB_NAME(st.dbid) AS DatabaseName,
    COUNT(*) AS NumberOfExecutions,
    SUM(qs.total_worker_time) AS TotalCPUUsage
FROM
    sys.dm_exec_query_stats AS qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
GROUP BY
    DB_NAME(st.dbid)
ORDER BY
    TotalCPUUsage DESC;

Diese Abfrage verwendet die sys.dm_exec_query_stats Und sys.dm_exec_sql_text Dynamische Verwaltungsansichten zum Abrufen von Informationen zur CPU -Verwendung und der zugehörigen Datenbank für jeden Abfrageausführungsplan in der SQL -Serverinstanz. Der DB_NAME Funktion wird verwendet, um den Datenbanknamen basierend auf dem abzurufen dbid Spalte.

Beispiel:

Wenn Sie die obige Abfrage ausführen, erhalten Sie ein Ergebnis mit den folgenden Spalten:

Datenbankname Numberofexecutions TotalCpuusage
Datenbank1 100 2000
Datenbank2 50 1500
Datenbank3 75 1000

2. Abfrage nach CPU -Nutzung nach Sitzung

Das Verständnis der CPU -Nutzung durch einzelne Sitzungen kann dazu beitragen, Prozesse oder Abfragen zu identifizieren, die übermäßige Ressourcen konsumieren. Sie können die Schuldigen bestimmen und geeignete Aktionen ergreifen, z. B. die Optimierung von Abfragen oder die Beendigung von langjährigen Sitzungen, falls erforderlich.

Um die CPU -Nutzung nach Sitzung zu erhalten, können Sie die folgende Abfrage verwenden:

SELECT
    session_id AS SessionID,
    login_time AS LoginTime,
    last_request_start_time AS LastRequestStartTime,
    total_worker_time AS TotalCPUUsage
FROM
    sys.dm_exec_sessions
WHERE
    status = 'running'
ORDER BY
    total_worker_time DESC;

Diese Abfrage ruft die Sitzungs -ID, die Anmeldezeit, die Last -Anfrage -Startzeit und die gesamte CPU -Nutzung für alle laufenden Sitzungen in der SQL -Serverinstanz ab. Der sys.dm_exec_sessions Die Dynamic Management View bietet Informationen zu den aktiven Sitzungen im SQL -Server.

Beispiel:

Durch Ausführen der obigen Abfrage wird ein Ergebnis mit den folgenden Spalten angegeben:

Sitzung Logintime LastrequestStartTime TotalCpuusage
55 2021-01-01 09:00:00 2021-01-01 09:10:00 5000
78 2021-01-02 14:30:00 2021-01-02 15:00:00 3000
102 2021-01-03 11:45:00 2021-01-03 12:30:00 2000

3. Abfrage zum CPU -Nutzungstrend

Die Überwachung des CPU -Nutzungstrends über einen bestimmten Zeitraum hilft beim Verständnis der Workload -Muster und zum Erkennen von Anomalien. Es ermöglicht Ihnen die Ermittlung der Spitzennutzungszeiten, Zeiträume mit zunehmendem Ressourcenbedarf und potenzielle Leistungsprobleme.

Um den CPU -Nutzungs -Trend zu erhalten, können Sie die folgende Abfrage verwenden:

SELECT
    DATEADD(MINUTE, (DATEDIFF(MINUTE, GETDATE(), GETUTCDATE())), [timestamp]) AS UTCTimestamp,
    SQLProcessUtilization AS CPUUtilization
FROM
    sys.dm_os_ring_buffers
WHERE
    ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
    AND record_id IN (
        SELECT
            MAX(record_id)
        FROM
            sys.dm_os_ring_buffers
        WHERE
            ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
            AND (record_id > (SELECT MAX(record_id) - 1440 FROM sys.dm_os_ring_buffers WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'))
    )
ORDER BY
    UTCTimestamp;

Diese Abfrage holt die CPU -Auslastung, die in den letzten 24 Stunden im Scheduler Monitor Ringpuffer aufgezeichnet wurde. Es berechnet den UTC -Zeitstempel mit dem GETUTCDATE Funktion, um den lokalen Zeitstempel in UTC umzuwandeln.

Beispiel:

Wenn Sie die obige Abfrage ausführen, erhalten Sie ein Ergebnis mit den folgenden Spalten:

UTCTIMESTAMP CPUUTILISION
2021-01-01 00:00:00 80
2021-01-01 00:01:00 75
2021-01-01 00:02:00 85

V.

Wenn der Gouverneur für den Ressourcen in Ihrer SQL Server -Umgebung aktiviert ist, können Sie die CPU -Nutzung durch die Funktion der Ressourcen -Gouverneur -Klassifizierer verfolgen. Dies hilft bei der Überwachung und Verwaltung der CPU -Nutzung basierend auf der Arbeitsbelastungsklassifizierung und ermöglicht eine bessere Ressourcenzuweisung und -steuerung.

Um die CPU -Nutzung durch die Funktion der Ressourcen -Gouverneur -Klassifikatorin zu erhalten, können Sie die folgende Abfrage verwenden:

SELECT
    name AS ClassifierFunction,
    cpu_time_ms AS CPUUsage
FROM
    sys.dm_resource_governor_resource_pools AS rgp
    JOIN sys.dm_exec_requests AS er ON rgp.pool_id = er.requested_resource_pool_id
CROSS APPLY
    sys.dm_exec_query_plan(er.plan_handle) AS qp
WHERE
    er.command = 'SELECT';

Diese Abfrage ruft den Funktionsnamen der Ressourcen -Gouverneur -Klassifikator und die zugehörige CPU -Verwendung für alle Anforderungen in der SQL -Serverinstanz mit dem Befehlstyp als "SELECT" ab.

Beispiel:

Durch Ausführen der obigen Abfrage wird ein Ergebnis mit den folgenden Spalten angegeben:

Klassifizierfunktion CPUUSAGE
Funktion1 1000
Funktion2 500
Funktion3 200

Untersuchen einer anderen Dimension von "Get SQL Server CPU -Nutzungsabfrage"

Tauchen wir nun in einen weiteren Aspekt der SQL Server -CPU -Auslastungsabfragen ein und konzentrieren sich auf Leistungsmetriken und Fehlerbehebung.

1. Abfrage zur CPU -Nutzung durch Abfrageausführungsplan

In SQL Server spielt der Abfrageausführungsplan eine wichtige Rolle bei der Bestimmung der CPU -Nutzung. Durch die Analyse der CPU -Nutzung auf der Ebene der Abfrageausführungsplan können Sie Abfragen identifizieren, die übermäßige Ressourcen konsumieren und diese für eine bessere Leistung optimieren.

Um die CPU -Auslastung durch Abfrageausführungsplan zu erhalten, können Sie die folgende Abfrage verwenden:

SELECT
    qp.query_plan AS QueryPlan,
    qs.total_worker_time AS TotalCPUUsage
FROM
    sys.dm_exec_query_stats AS qs
    CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
ORDER BY
    TotalCPUUsage DESC;

Diese Abfrage ruft den Abfrageausführungsplan und die zugehörige CPU -Nutzung für alle Abfragepläne in der SQL -Serverinstanz ab. Der sys.dm_exec_query_stats Die dynamische Managementansicht enthält Informationen zu den Abfragestatistiken, während die sys.dm_exec_query_plan Die dynamische Verwaltungsfunktion ruft den Abfrageausführungsplan ab.

Beispiel:

Durch Ausführen der obigen Abfrage wird ein Ergebnis mit den folgenden Spalten angegeben:

QueryPlan TotalCpuusage
Ausführungsplan XML 4000
Ausführungsplan XML 3500
Ausführungsplan XML 3000

2. Abfrage zur CPU -Nutzung durch zwischengespeicherte Abfragen

SQL Server verfügt über einen Abfrage -Cache, der die Ausführungspläne von häufig ausgeführten Abfragen speichert. Durch die Untersuchung der CPU -Nutzung durch zwischengespeicherte Abfragen können Sie hohe CPU -Verwendungsabfragen identifizieren und entsprechend optimieren.

Um die CPU -Nutzung durch zwischengespeicherte Abfragen zu erhalten, können Sie die folgende Abfrage verwenden:

SELECT
    qt.[text] AS Query,
    qs.total_worker_time AS TotalCPUUsage
FROM
    sys.dm_exec_query_stats AS qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
ORDER BY
    TotalCPUUsage DESC;

Diese Abfrage ruft den Abfragetext und die zugehörige CPU -Verwendung für alle zwischengespeicherten Abfragen in der SQL -Serverinstanz ab. Der sys.dm_exec_sql_text Die dynamische Verwaltungsfunktion wird verwendet, um den Abfragetext basierend auf dem SQL -Handle abzurufen.

Beispiel:

Durch Ausführen der obigen Abfrage wird ein Ergebnis mit den folgenden Spalten angegeben:

Abfrage TotalCpuusage
Wählen Sie * aus Tabelle 1 aus 2000
Wählen Sie * aus Tabelle2 aus 1500
Wählen Sie * aus Tabelle 3 aus 1000

3.. Abfragen Sie die CPU -Nutzung durch Wartearten ab

SQL Server verfolgt verschiedene Wartentypen, die Verzögerungen oder Ressourcenkonkurrenz im System anzeigen. Durch die Untersuchung der CPU -Nutzung durch Wartearten können Sie spezifische Wartezeiten identifizieren, die zur hohen CPU -Nutzung beitragen und geeignete Maßnahmen ergreifen, um sie zu mildern.

Um die CPU -Nutzung durch Wartearten zu erhalten, können Sie die folgende Abfrage verwenden:

SELECT
    wt.wait_type AS WaitType,
    SUM(qs.total_worker_time) AS TotalCPUUsage
FROM
    sys.dm_exec_query_stats AS qs
    JOIN sys.dm_os_wait_stats AS ws ON qs.plan_handle = ws.plan_handle
    JOIN sys.dm_os_waiting_tasks AS wt ON ws.waiting_task_address = wt.waiting_task_address
WHERE
    wt.wait_type LIKE '%CPU%'
GROUP BY
    wt.wait_type
ORDER BY
    TotalCPUUsage DESC;

Diese Abfrage ruft den Warteart und die zugehörige CPU -Verwendung für alle mit der CPU in der SQL Server -Instanz bezogenen Wartezeittypen ab. Der sys.dm_os_wait_stats Die dynamische Managementansicht enthält Informationen zu den Wartestatistiken, während die sys.dm_os_waiting_tasks Die Dynamic Management View holt die Details der Warteaufgaben ab.

Beispiel:

Durch Ausführen der obigen Abfrage wird ein Ergebnis mit den folgenden Spalten angegeben:

Holen Sie sich die SQL Server -CPU -Auslastungsabfrage

So erhalten Sie SQL Server CPU -Auslastungsabfrage

Die Überwachung der CPU -Nutzung Ihres SQL -Servers ist entscheidend für die Identifizierung von Leistungsproblemen und die Gewährleistung einer optimalen Leistung. Befolgen Sie die folgenden Schritte, um die CPU -Auslastungsabfrage zu erhalten:

  • Stellen Sie mit Ihrem bevorzugten Tool (SQL Server Management Studio usw.) eine Verbindung zum SQL -Server her.
  • Öffnen Sie ein neues Abfragefenster.
  • Führen Sie die folgende T-SQL-Anweisung aus:
WÄHLEN
  SQLProcessutilization als "SQL Server CPU -Auslastung",
  Systemidle als "System im Leerlauf",
  100 - Systemidle - SQLProcessutilization als "andere"
AUS
  sys.dm_os_ring_buffer
WO
  RING_BUFFER_TYPE = N'Ring_Buffer_Scheduler_Monitor '
  Und record_id = ((
    WÄHLEN
      Max (record_id)
    AUS
      sys.dm_os_ring_buffer
    WO
      RING_BUFFER_TYPE = N'Ring_Buffer_Scheduler_Monitor '
  );

Die obige Abfrage ruft die CPU -Auslastungsinformationen aus der Systemansicht ab sys.dm_os_ring_buffersspeziell von der RING_BUFFER_SCHEDULER_MONITOR. Es gibt den SQL Server -CPU -Auslastung, den Prozentsatz des Systems und die CPU -Nutzung anderer Prozesse zurück.


Wichtigste Imbiss:

  • Überwachen Sie die SQL Server -CPU -Nutzung mit dem SQL Server Management Studio.
  • Verwenden Sie den DMV SYS.DM_OS_RING_BUFFERS, um CPU -Nutzungsstatistiken zu sammeln.
  • Fragen Sie den DMV sys.dm_os_process_memory ab, um die CPU -Verwendung durch SQL Server -Prozesse zu finden.
  • Verwenden Sie die Perfmon -Zähler, um die CPU -Nutzung im Laufe der Zeit zu verfolgen.
  • Optimieren Sie Abfragen, Indizes und Serverkonfigurationen, um die CPU -Auslastung zu verringern.

Häufig gestellte Fragen

Hier sind einige häufige Fragen und Antworten zum Abrufen der CPU -Auslastungsabfrage auf SQL Server.

1. Wie kann ich die CPU -Auslastungsabfrage in SQL Server abrufen?

Um die CPU -Auslastungsabfrage in SQL Server abzurufen, können Sie die folgende Abfrage verwenden:

SELECT cpu_percent
FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type = 'RING_BUFFER_SCHEDULER_MONITOR'
AND record_id = (
    SELECT MAX(record_id)
    FROM sys.dm_os_ring_buffers
    WHERE ring_buffer_type = 'RING_BUFFER_SCHEDULER_MONITOR'
)

Diese Abfrage verwendet die dynamische Verwaltungsansicht sys.dm_os_ring_buffers, um den Prozentsatz der CPU -Nutzung abzurufen. Es filtert für den Ring -Puffertyp 'ring_buffer_scheduler_monitor' 'und wählt den Datensatz mit dem höchsten Record_ID aus, der die neuesten Daten darstellt.

2. Kann ich mit dieser Abfrage historische CPU -Nutzungsdaten erhalten?

Nein, in der angegebenen Abfrage wird die aktuellen CPU -Auslastungsdaten abgerufen. Wenn Sie historische CPU -Nutzungsdaten benötigen, müssen Sie die Daten regelmäßig anhand anderer Methoden wie erweiterten Ereignisse oder SQL -Serverprofiler sammeln und speichern.

3. Was repräsentiert die Spalte 'CPU_percent' im Abfrageergebnis?

Die Spalte 'CPU_percent' im Abfrageergebnis repräsentiert den Prozentsatz der CPU -Nutzung zum Zeitpunkt der Ausführung der Abfrage. Es gibt den Teil der Kapazität der CPU an, die derzeit von SQL Server -Prozessen verwendet wird.

4. Gibt es eine Möglichkeit, CPU -Auslastungsdaten für bestimmte SQL -Server -Instanzen abzurufen?

Ja, Sie können die Abfrage so ändern, dass die CPU -Auslastungsdaten für bestimmte SQL Server -Instanzen filtern. Fügen Sie eine zusätzliche Bedingung in der WHERE -Klausel hinzu, die mit dem gewünschten Namen der SQL Server -Instanz entspricht:

SELECT cpu_percent
FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type = 'RING_BUFFER_SCHEDULER_MONITOR'
AND record_id = (
    SELECT MAX(record_id)
    FROM sys.dm_os_ring_buffers
    WHERE ring_buffer_type = 'RING_BUFFER_SCHEDULER_MONITOR'
)
AND [sqlserver].[session_id] = @@SPID

Durch die Verwendung des Zustands '[SQLServer]. [Session_id] = @@ Spid' gibt die Abfrage die CPU -Nutzungsdaten nur für die aktuelle SQL -Serverinstanz zurück.

5. Kann ich die CPU-Nutzung in Echtzeit mit dieser Abfrage überwachen?

Nein, die Abfrage ruft zum Zeitpunkt der Ausführung die neuesten CPU -Nutzungsdaten ab. Um die CPU-Auslastung in Echtzeit zu überwachen, können Sie Tools wie SQL Server-Profiler, erweiterte Ereignisse oder Überwachungslösungen von Drittanbietern verwenden, die Funktionen zur Überwachung von Echtzeit bieten.



Das Verständnis der Überwachung und Analyse der CPU -Nutzung im SQL -Server ist entscheidend für die Aufrechterhaltung der Leistung und Stabilität Ihrer Datenbank. Durch die Verwendung der entsprechenden Abfrage können Sie problemlos wertvolle Informationen über die CPU-Nutzung sammeln, z.

Die Überwachung der CPU -Nutzung hilft Ihnen, potenzielle Engpässe zu identifizieren und die Abfrageleistung zu optimieren. Durch die regelmäßige Überprüfung der CPU -Nutzung können Sie proaktiv alle Probleme angehen und sicherstellen, dass Ihre SQL Server -Umgebung effizient ausgeführt wird. Denken Sie daran, die Abfrage in Zeiten der Spitzenaktivität durchzuführen, um ein genaues Maß für die CPU -Verwendung zu erhalten.


Letzter Beitrag