Auf dieser Seite wird beschrieben, wie Sie die in Ihrer Datenbank aktiven Abfragen überwachen und Fehler beheben. Mit dem Monitoring dieser Abfragen können Sie Ursachen für Systemlatenz und hohe CPU-Auslastung erkennen.
Im Query Insights-Dashboard können Sie eine Zusammenfassung der aktiven Transaktionen und eine Liste der Transaktionen mit zugehörigen Abfragen und Statistiken aufrufen. Die Transaktionen werden nach der Startzeit der Transaktion angezeigt. Wenn sehr viele Abfragen ausgeführt werden, sind die Ergebnisse möglicherweise auf eine Teilmenge der Gesamtabfragen beschränkt.
Hinweise
Sie können aktive Abfragen entweder mit Cloud SQL Enterprise oder Cloud SQL Enterprise Plus überwachen.
Wenn Sie eine Sitzung oder eine lang andauernde Transaktion in aktiven Abfragen beenden möchten, müssen Sie die Cloud SQL Enterprise Plus-Version für Ihre Cloud SQL-Instanz verwenden.
Weitere Informationen zu den Cloud SQL-Versionen finden Sie unter Einführung in die Cloud SQL-Versionen.
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, in dem sich die Cloud SQL-Instanz befindet, damit Sie die Berechtigungen erhalten, die Sie zum Aufrufen aktiver Abfragen benötigen:
-
Zusammenfassung der Instanzaktivität ansehen:
Cloud SQL-Betrachter (
roles/cloudsql.viewer) -
Zusammenfassung der Datenbankaktivitäten und lang andauernde Transaktionen ansehen:
Database Insights Viewer (
roles/databaseinsights.viewer) -
Sitzung oder lang andauernde Transaktion beenden:
-
Cloud SQL-Bearbeiter (
roles/cloudsql.editor) -
Administrator für Database Insights Operations (
roles/databaseinsights.operationsAdmin)
-
Cloud SQL-Bearbeiter (
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Aufrufen aktiver Abfragen erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um aktive Abfragen aufzurufen:
-
Zusammenfassung der Datenbankaktivitäten und lange laufende Transaktionen ansehen:
-
databaseinsights.activeQueries.fetch -
databaseinsights.activitySummary.fetch
-
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Aktive Abfragen aktivieren
Wenn Sie Abfragestatistiken aktivieren, werden aktive Abfragen automatisch aktiviert. Wenn Sie eine Sitzung oder eine lang andauernde Transaktion in aktiven Abfragen beenden möchten, müssen Sie Query Insights für Cloud SQL Enterprise Plus-Version verwenden.
Aktive Abfragen deaktivieren
Sie können aktive Abfragen nicht deaktivieren, ohne Query Insights zu deaktivieren. Informationen zum Deaktivieren aktiver Abfragen und Abfragestatistiken finden Sie unter Abfragestatistiken deaktivieren.
Aktive Abfragen ansehen
So rufen Sie Ihre aktiven Abfragen auf:
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
Führen Sie einen der folgenden Schritte aus, um das Dashboard Query Insights aufzurufen:
- Wählen Sie den Tab Query Insights aus.
- Zu „Query Insights“ für ausführliche Informationen über Abfragen und zur Leistung Das Dashboard "Query Insights" wird geöffnet. Oben werden Details zur Instanz angezeigt.
Klicken Sie auf den Tab Aktive Anfragen.
Von hier aus können Sie die Abfrageinformationen ändern, die in der Tabelle Am längsten laufende Transaktionen angezeigt werden:
- Datenbanken: Filtert die Abfragelast für eine bestimmte Datenbank oder für alle Datenbanken.
- Nutzer: Filtert die Abfragelast aus einem bestimmten Nutzerkonto.
Normalisierte aktive Abfragen ansehen
Sie können eine Liste der lang andauernden Transaktionen mit normalisierten aktiven Abfragen im Dashboard Query Insights aufrufen. Bei einer normalisierten aktiven Abfrage werden sensible Daten entfernt und ein Digest zurückgegeben. Der Digest ist für verschiedene Werte identisch, die im folgenden Beispiel verwendet werden:
Reguläre Abfragen
select * from test_table where id=1;select * from test_table_where id=2;
Digest- oder normalisierte Abfrage
select * from test_table where id=?;
Eine Abfrage, die in verschiedenen Sitzungen ausgeführt wird, wird im Dashboard als unterschiedliche Einträge angezeigt.
Am längsten laufende Transaktionen ansehen
Die Tabelle Am längsten laufende Transaktionen im Dashboard Abfragestatistiken enthält die folgenden Spalten:
| Spaltenname | Beschreibung |
|---|---|
| Sitzungs-ID | Eindeutige Kennung der Sitzung. |
| Abfrage | SQL-Abfragetext. |
| Sitzungsstatus | Der Status der Sitzung. |
| Abfragedauer | Wie lange die Abfrage schon ausgeführt wird. |
| ID der blockierenden Sitzung | Die ID der Sitzung, die die Sitzung blockiert. |
| Warteereignistyp | Der Typ des Warteereignisses, wenn die Anfrage für die Ausführung der Abfrage blockiert wird. |
| Warteressource | Die Ressource, auf die die Anfrage derzeit wartet, wenn die Anfrage für die Ausführung der Abfrage blockiert ist. |
| Transaktionswartezeit | Die Dauer der aktuellen Wartezeit, wenn die Sitzung blockiert ist. |
| Logische Lesevorgänge | Die Anzahl der logischen Lesevorgänge, die von der Anfrage ausgeführt wurden. |
| Lesevorgänge | Die Anzahl der Lesezugriffe, die durch die Anfrage ausgeführt wurden. |
| Schreibvorgänge | Die Anzahl der Schreibvorgänge, die durch die Anfrage ausgeführt wurden. |
| Datenbank | Datenbank, in der die Sitzung ausgeführt wird. |
| Nutzer | Name des Nutzers, der mit der Datenbank verbunden ist. |
| Clientadresse | Die bestimmte IP-Adresse des Clients, der eine Anfrage gesendet hat. |
| CPU-Zeit (ms) | Die CPU-Zeit in Millisekunden, die von der Anfrage verwendet wird. |
| Name der Anwendung | Name der Anwendung, die die Sitzung gestartet hat. |
| Geänderte Transaktionszeilen | Anzahl der Zeilen, die mit dieser Abfrage an den Client zurückgegeben wurden. |
| % abgeschlossen | Prozentsatz der erledigten Arbeit, wenn in der Abfrage der Fortschritt angegeben wird. |
| Zugewiesener Abfragearbeitsspeicher | Die Anzahl der Seiten, die für die Ausführung der Anfrage zugewiesen wurden. |
| Aktion | Enthält einen Link zum Beenden einer Sitzung. |
Die Anzeige wird alle 60 Sekunden automatisch aktualisiert.
Über das vertikale Menü Optionen für die Inhaltsanzeige... können Sie die anzuzeigenden Spalten filtern.
Sitzung beenden
Wenn Sie eine Sitzung oder eine lang andauernde Transaktion beenden möchten, müssen Sie die Cloud SQL Enterprise Plus-Version verwenden und Query Insights für Cloud SQL Enterprise Plus aktivieren.
Das Beenden von Vorgängen mit langer Ausführungszeit kann länger dauern.
So beenden Sie eine Abfrage oder Transaktion:
- Wählen Sie in der Tabelle Am längsten laufende Transaktion eine Abfrage aus.
- Klicken Sie in der Spalte Aktion auf Sitzung beenden.
- Klicken Sie im Fenster Sitzung beenden auf Bestätigen.
Blockierte aktive Abfragen
Wenn eine bestimmte aktive Abfrage blockiert wird oder viel länger als erwartet ausgeführt wird, kann sie andere abhängige Abfragen blockieren.
Mit Cloud SQL haben Sie die Möglichkeit, bestimmte aktive Abfragen mit langer Ausführungszeit oder blockierte aktive Abfragen zu beenden.
Analyse blockierter aktiver Abfragen aktivieren
Standardmäßig wird in der Google Cloud Console nicht angezeigt,welche aktiven Abfragen blockiert werden.
Für die Analyse blockierter aktiver Abfragen gelten die folgenden Anforderungen:
- Sie müssen eine Cloud SQL Enterprise Plus-Instanz verwenden.
- Sie müssen Enterprise Plus-Funktionen aktivieren.
So aktivieren Sie die Analyse blockierter aktiver Abfragen:
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
- Klicken Sie auf Bearbeiten.
- Maximieren Sie den Bereich Abfragestatistiken.
- Wählen Sie sowohl Query Insights aktivieren als auch Enterprise Plus-Funktionen aktivieren aus. Beide Einstellungen sind erforderlich.
- Wählen Sie Analyse blockierter Abfragen aus.
- Klicken Sie auf Speichern.
Blockierte aktive Abfrage identifizieren und beenden
In den folgenden Schritten wird beschrieben, wie Sie eine bestimmte aktive Abfrage identifizieren und beenden, die möglicherweise andere Abfragen blockiert.
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
- Klicken Sie im SQL-Navigationsmenü auf Query Insights.
- Klicken Sie auf den Tab Aktive Anfragen.
Wenn Sie noch keine aktiven Abfragen ausführen, rufen Sie Cloud SQL Studio auf und führen Sie die Abfragen aus, die Sie untersuchen möchten.
- Rufen Sie den Bereich Am längsten laufende Transaktionen auf. Unter jeder Kategorie können Sie bis zu 50 der aktiven Abfragen mit der längsten Ausführungszeit sehen.
Für jeden angezeigten Eintrag werden Details zur aktiven Abfrage angezeigt, darunter:
- Sitzungs-ID: Die Sitzungs-ID der Abfrage. Klicken Sie auf Maximieren, um den Eintrag aufzurufen. Sie sehen eines von zwei Symbolen:
- Stundenglassymbol: Dieses Symbol gibt an, dass die Abfrage darauf wartet, dass eine andere Abfrage abgeschlossen wird. Wenn neben dem Symbol eine Zahl angezeigt wird, gibt diese an, wie viele abhängige Abfragen darauf warten, dass diese Abfrage abgeschlossen wird.
- Symbol für Blockierung: Dieses Symbol weist darauf hin, dass die Abfrage nicht abgeschlossen werden kann und möglicherweise andere Abfragen blockiert.
- Abfrage: SQL-Abfragetext.
- Sitzungsstatus: Der Status der Sitzung.
- Abfragedauer (Sekunden): Die Dauer der Ausführung der Abfrage.
- CPU-Zeit(ms): Die CPU-Zeit in Millisekunden, die für die Anfrage verwendet wird.
- Warteereignistyp: Der Typ des Warteereignisses, wenn die Anfrage für die Ausführung der Abfrage blockiert ist.
- Warteressource: Die Ressource, auf die die Anfrage derzeit wartet, wenn die Anfrage für die Ausführung der Abfrage blockiert ist.
- Transaktionswartezeit (Sekunden): Die Dauer der aktuellen Wartezeit, wenn die Sitzung blockiert ist.
- Aktion: Mögliche Aktionen, z. B. Sitzung beenden.
Klicken Sie auf die Sitzungs-ID, die Sie untersuchen möchten, um sie zu maximieren. Sie können zugrunde liegende Prozesse im Untersuchungsbaum auf bis zu drei Ebenen aufschlüsseln.
- Sitzungs-ID: Die Sitzungs-ID der Abfrage. Klicken Sie auf Maximieren, um den Eintrag aufzurufen. Sie sehen eines von zwei Symbolen:
- Suchen Sie nach der blockierten Anfrage und klicken Sie dann auf Sitzung beenden. Nachdem Sie die Sitzung beendet haben, können Sie Cloud SQL Studio aufrufen, um Ihre aktiven Abfragen noch einmal auszuführen.
Details zum Blockieren von Schlafphasen ansehen
Auf dem Tab Aktive Abfragen werden Sitzungen angezeigt, in denen derzeit eine Anfrage verarbeitet wird. Sitzungen im Status SLEEPING sind in dieser Ansicht nicht enthalten.
Wenn Sie den letzten Befehl sehen möchten, der für eine inaktive Sitzung ausgeführt wurde, verwenden Sie das folgende Script:
SELECT c.session_id, st.text,s.login_name, s.open_transaction_count, s.host_name, s.program_name
FROM sys.dm_exec_connections AS c JOIN sys.dm_exec_sessions AS S ON c.session_id=s.session_id
CROSS APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) AS st
WHERE s.session_id=BLOCKING_SESSION_ID
Ersetzen Sie BLOCKING_SESSION_ID durch die ID der Sitzung, die die Blockierung verursacht.
Weitere Informationen zur Fehlerbehebung und Behebung von Blockierungen finden Sie in den folgenden Ressourcen:
- Blockierung aufgrund einer inaktiven SPID mit einer nicht übertragenen Transaktion
- SQL Server-Blockierungsprobleme verstehen und beheben