Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting
CANCEL
Bricht eine Datenbankabfrage ab, die zurzeit ausgeführt wird.
Der Befehl CANCEL erfordert die Prozess-ID oder Sitzungs-ID der ausgeführten Abfrage und zeigt eine Bestätigungsmeldung an, um zu bestätigen, dass die Abfrage abgebrochen wurde.
Erforderliche Berechtigungen
Für CANCEL sind folgende Berechtigungen erforderlich:
-
Superuser bricht seine eigene Abfrage ab
-
Superuser bricht die Abfrage eines Benutzers ab
-
Benutzer mit der Berechtigung CANCEL bricht die Abfrage eines Benutzers ab
-
Benutzer storniert seine eigene Abfrage
Syntax
CANCEL process_id [ 'message' ]
Parameter
- process_id
-
Um eine Abfrage abzubrechen, die in einem Amazon-Redshift-Cluster ausgeführt wird, verwenden Sie die
pid(Prozess-ID) aus STV_RECENTS, die der Abfrage entspricht, die Sie abbrechen möchten.Um eine Abfrage abzubrechen, die in einer Arbeitsgruppe in Amazon Redshift Serverless ausgeführt wird, verwenden Sie die
session_idaus SYS_QUERY_HISTORY, die der Abfrage entspricht, die Sie abbrechen möchten. - 'message'
-
Eine optionale Bestätigungsmeldung, die angezeigt wird, wenn der Abbruch der Abfrage abgeschlossen ist. Wenn Sie keine Meldung angeben, zeigt Amazon Redshift die Standardmeldung als Verifizierung an. Sie müssen die Meldung in einfache Anführungszeichen setzen.
Nutzungshinweise
Sie können eine Abfrage nicht durch Angabe einer Abfrage-ID abbrechen. Sie müssen die Prozess-ID (PID) oder die Sitzungs-ID der Abfrage angeben. Sie können nur Aufträge abbrechen, die zurzeit von Ihrem Benutzer ausgeführt werden. Superuser können alle Abfragen abbrechen.
Wenn Abfragen in mehreren Sitzungen dieselbe Tabelle sperren, können Sie die Funktion PG_TERMINATE_BACKEND verwenden, um eine der Sitzungen zu beenden. Dabei werden alle Transaktionen, die zurzeit in der beendeten Sitzung ausgeführt werden, gezwungen, alle Sperren aufzuheben und für die Transaktionen ein Rollback auszuführen. Führen Sie eine Abfrage für die Systemtabelle STV_LOCKS aus, um die zurzeit vorhandenen Sperren anzuzeigen.
Im Anschluss an bestimmte interne Ereignisse startet Amazon Redshift möglicherweise eine aktive Sitzung neu und weist eine neue PID zu. Wenn die PID geändert wurde, erhalten Sie möglicherweise die folgende Fehlermeldung.
Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.
Um die neue PID zu suchen, führen Sie eine Abfrage für die Systemtabelle STL_RESTARTED_SESSIONS aus und filtern nach der Tabelle oldpid.
select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;
Beispiele
Um eine Abfrage abzubrechen, die aktuell in einem Amazon-Redshift-Cluster ausgeführt wird, rufen Sie zuerst die Prozess-ID für die Abfrage ab, die Sie abbrechen möchten. Um die Prozess-IDs für alle zurzeit ausgeführten Abfragen zu ermitteln, geben Sie den folgenden Befehl ein:
select pid, starttime, duration, trim(user_name) as user, trim (query) as querytxt from stv_recents where status = 'Running'; pid | starttime | duration | user | querytxt -----+----------------------------+----------+----------+----------------- 802 | 2008-10-14 09:19:03.550885 | 132 | dwuser | select venuename from venue where venuestate='FL', where venuecity not in ('Miami' , 'Orlando'); 834 | 2008-10-14 08:33:49.473585 | 1250414 | dwuser | select * from listing; 964 | 2008-10-14 08:30:43.290527 | 326179 | dwuser | select sellerid from sales where qtysold in (8, 10);
Überprüfen Sie den Text der Abfrage, um festzustellen, welche Prozess-ID (POD) der Abfrage entspricht, die Sie abbrechen möchten.
Geben Sie den folgenden Befehl ein, um PID 802 zu verwenden und diese Abfrage abzubrechen:
cancel 802;
Die Sitzung, in der die Abfrage ausgeführt wurde, zeigt die folgende Meldung an:
ERROR: Query (168) cancelled on user's request
168 ist die Abfrage-ID (nicht die Prozess-ID, die für den Abbruch der Abfrage verwendet wurde).
Alternativ können Sie eine benutzerdefinierte Bestätigungsmeldung angeben, die statt der Standardmeldung angezeigt wird. Um eine benutzerdefinierte Meldung anzugeben, setzen Sie die Meldung am Ende des Befehls CANCEL (ABBRECHEN) in Anführungszeichen:
cancel 802 'Long-running query';
Die Sitzung, in der die Abfrage ausgeführt wurde, zeigt die folgende Meldung an:
ERROR: Long-running query