Brechen Sie eine Abfrage ab - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Brechen Sie eine Abfrage ab

Wenn Sie eine Abfrage ausführen, die zu lange dauert oder zu viele Ressourcen verbraucht, brechen Sie die Abfrage ab. Zum Beispiel: Erstellen Sie eine Liste von Ticketverkäufern, die die Namen der Verkäufer und die Anzahl der verkauften Tickets enthält. Die folgende Abfrage wählt Daten aus der SALES Tabelle und der USERS Tabelle aus und verknüpft die beiden Tabellen durch Abgleich SELLERID und USERID in der WHERE Klausel.

SELECT sellerid, firstname, lastname, sum(qtysold) FROM sales, users WHERE sales.sellerid = users.userid GROUP BY sellerid, firstname, lastname ORDER BY 4 desc;

Das Ergebnis sieht in etwa wie folgt aus.

sellerid | firstname | lastname | sum ----------+-----------+----------+------ 48950 | Nayda | Hood | 184 19123 | Scott | Simmons | 164 20029 | Drew | Mcguire | 164 36791 | Emerson | Delacruz | 160 13567 | Imani | Adams | 156 9697 | Dorian | Ray | 156 41579 | Harrison | Durham | 156 15591 | Phyllis | Clay | 152 3008 | Lucas | Stanley | 148 44956 | Rachel |Villarreal| 148
Anmerkung

Dies ist eine komplexe Abfrage. Für dieses Tutorial müssen Sie sich über den Aufbau dieser Abfrage keine Gedanken machen.

Die vorherige Abfrage dauert wenige Sekunden und gibt 2 102 Zeilen aus.

Angenommen, Sie vergessen, die WHERE Klausel einzufügen.

SELECT sellerid, firstname, lastname, sum(qtysold) FROM sales, users GROUP BY sellerid, firstname, lastname ORDER BY 4 desc;

Der Ergebnissatz enthält dann alle Zeilen in der SALES-Tabelle, multipliziert mit allen Zeilen in der USERS-Tabelle (49989*3766). Dies ist eine so genannte Cartesische Verbindung, die nicht zu empfehlen ist. Das Ergebnis sind mehr als 188 Millionen Zeichen, und die Verarbeitungszeit ist extrem lang.

Um eine laufende Abfrage abzubrechen, verwenden Sie den CANCEL Befehl mit der Sitzungs-ID der Abfrage. Mit dem Amazon Redshift Redshift-Abfrage-Editor v2 können Sie eine Abfrage abbrechen, indem Sie auf die Schaltfläche Abbrechen klicken, während die Abfrage ausgeführt wird.

Um die Sitzungs-ID zu finden, starten Sie eine neue Sitzung und fragen Sie die RECENTS Tabelle STV _ ab, wie im vorherigen Schritt gezeigt. Das folgende Beispiel zeigt, wie Sie die Ergebnisse lesbarer machen können. Verwenden Sie dazu die TRIM Funktion, um nachfolgende Leerzeichen zu kürzen und nur die ersten 20 Zeichen der Abfragezeichenfolge anzuzeigen.

Führen Sie die folgende SELECT Anweisung aus, um die Sitzungs-ID einer laufenden Abfrage zu ermitteln.

SELECT user_id, session_id, start_time, query_text FROM sys_query_history WHERE status='running';

Das Ergebnis sieht in etwa wie folgt aus.

user_id | session_id | start_time | query_text ---------+---------------+----------------------------+---------------------------------------------------------------- 100 | 1073791534 | 2024-03-19 22:26:21.205739 | SELECT user_id, session_id, start_time, query_text FROM ...

Führen Sie den folgenden Befehl aus1073791534, um die Abfrage mit der Sitzungs-ID abzubrechen.

CANCEL 1073791534;
Anmerkung

Der CANCEL Befehl stoppt keine Transaktion. Um eine Transaktion zu beenden oder rückgängig zu machen, verwenden Sie den ROLLBACK Befehl ABORT oder. Um eine mit einer Transaktion verbundene Abfrage abzubrechen, brechen Sie zuerst die Abfrage ab und stoppen Sie dann die Transaktion.

Wenn die Abfrage, die Sie storniert haben, mit einer Transaktion verknüpft ist, verwenden Sie den ROLLBACK Befehl ABORT oder, um die Transaktion abzubrechen und alle an den Daten vorgenommenen Änderungen zu verwerfen:

ABORT;

Sie können nur Ihre eigenen Abfragen abbrechen, sofern Sie nicht als Superuser angemeldet sind. Superuser können alle Abfragen abbrechen.

Wenn Ihr Abfragetool nicht die gleichzeitige Ausführung von Abfragen unterstützt, starten Sie zum Abbruch der Abfrage eine weitere Sitzung.

Weitere Informationen zum Stornieren einer Abfrage finden Sie CANCELim Amazon Redshift Database Developer Guide.

Abbrechen einer Abfrage mit der Superuser-Warteschlange

Wenn in Ihrer aktuellen Sitzung zu viele Abfragen gleichzeitig ausgeführt werden, können Sie den CANCEL Befehl möglicherweise erst ausführen, wenn eine andere Abfrage abgeschlossen ist. Führen Sie in diesem Fall den CANCEL Befehl mithilfe einer anderen Abfragewarteschlange für die Arbeitslastverwaltung aus.

Workload-Verwaltung ermöglicht Ihnen die Ausführung von Abfragen in verschiedenen Abfragewarteschlangen, so dass Sie nicht warten müssen, bis eine andere Abfrage abgeschlossen ist. Der Workload Manager erstellt eine separate Warteschlange mit der Bezeichnung „Superuser-Warteschlange“, die Sie für Fehlerbehebungszwecke verwenden können. Um die Superuser-Warteschlange zu verwenden, melden Sie sich bei einem Superuser an und setzen Sie die Abfragegruppe mithilfe des Befehls auf „Superuser“. SET Nachdem Sie Ihre Befehle ausgeführt haben, setzen Sie die Abfragegruppe mit dem Befehl zurück. RESET

Um eine Abfrage mithilfe der Superuser-Warteschlange abzubrechen, führen Sie diese Befehle aus.

SET query_group TO 'superuser'; CANCEL 1073791534; RESET query_group;