WLM-Abfragewarteschlangen-Hopping - 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.

WLM-Abfragewarteschlangen-Hopping

Eine Abfrage kann aufgrund eines WLM-Timeouts oder einer Abfrageüberwachungsregel (Query Monitoring Rule, QMR) gehoppt werden. Sie können Abfragen-Hopping nur in einer manuellen WLM-Konfiguration ausführen.

Wenn für eine Abfrage Hopping ausgeführt wird, versucht WLM, die Abfrage auf Grundlage der WLM-Abfragezuweisungsregeln an die nächste übereinstimmende Warteschlange weiterzuleiten. Wenn die Abfrage keiner anderen Warteschlangendefinition entspricht, wird sie abgebrochen. Sie wird nicht der Standardwarteschlange zugewiesen.

WLM-Timeout-Aktionen

In der folgenden Tabelle ist das Verhalten der verschiedenen Abfragetypen bei einem WLM-Timeout zusammengefasst.

Abfragetyp Action
INSERT, UPDATE und DELETE Abbrechen
Benutzerdefinierte Funktionen (User-defined functions, UDFs) Abbrechen
UNLOAD Abbrechen
COPY Ausführung wird fortgesetzt
Wartungsoperationen Ausführung wird fortgesetzt
Schreibgeschützte Abfragen mit dem Status returning Ausführung wird fortgesetzt
Schreibgeschützte Abfragen mit dem Status running Neuzuweisung oder Neustart
CREATE TABLE AS (CTAS), SELECT INTO Neuzuweisung oder Neustart

Warteschlangen-Hopping aufgrund von WLM-Timeouts

WLM hoppt die folgenden Abfragen bei einem Timeout:

  • Schreibgeschützte Abfragen wie SELECT-Anweisungen mit dem WLM-Status running. Sie finden den WLM-Status einer Abfrage in der Spalte STATE in der Systemtabelle STV_WLM_QUERY_STATE.

  • CREATE TABLE AS (CTAS)-Anweisungen. WLM-Warteschlangen-Hopping unterstützt sowohl benutzerdefinierte als auch vom System generierte CTAS-Anweisungen.

  • SELECT INTO-Anweisungen

Abfragen, die keinen WLM-Timeouts unterliegen, werden weiterhin in der ursprünglichen Warteschlange ausgeführt, bis sie abgeschlossen sind. Die folgenden Abfragetypen unterliegen keinen WLM-Timeouts:

  • COPY-Anweisungen

  • Wartungsoperationen wie ANALYZE und VACUUM

  • Schreibgeschützte Abfragen wie SELECT-Anweisungen mit dem WLM-Status returning. Sie finden den WLM-Status einer Abfrage in der Spalte STATE in der Systemtabelle STV_WLM_QUERY_STATE.

Abfragen, die bei einem WLM-Timeout für Hopping qualifiziert sind, werden beim Timeout beendet. Die folgenden Abfragetypen sind bei einem WLM-Timeout nicht für Hopping qualifiziert:

  • INSERT-, UPDATE- und DELETE-Anweisungen

  • UNLOAD-Anweisungen

  • Benutzerdefinierte Funktionen (User-defined functions, UDFs)

Nach WLM-Timeout neu zugewiesene und neu gestartete Abfragen

Wenn für eine Abfrage Hopping ausgeführt, aber keine passende Warteschlange gefunden wird, wird die Abfrage abgebrochen.

Wenn für eine Abfrage Hopping ausgeführt und eine passende Warteschlange gefunden wird, versucht WLM, die Abfrage einer neuen Warteschlange zuzuweisen. Wenn eine Abfrage nicht neu zugewiesen werden kann, wird sie in der neuen Wartschlange wie nachfolgend beschrieben neu gestartet.

Eine Abfrage wird nur dann neu zugewiesen, wenn alle folgenden Bedingungen zutreffen:

  • Es wird eine passende Warteschlange gefunden.

  • Die neue Warteschlange enthält ausreichend freie Slots zum Ausführen der Warteschlange. Eine Abfrage benötigt möglicherweise mehrere Slots, wenn der wlm_query_slot_count-Parameter einen höheren Wert als 1 enthält.

  • Die neue Warteschlange verfügt über mindestens soviel Arbeitsspeicher wie derzeit von der Abfrage verwendet.

Wenn die Abfrage neu zugewiesen wird, wird sie in der neuen Warteschlange weiter ausgeführt. Da Zwischenergebnisse beibehalten werden, gibt es nur minimale Auswirkungen auf die gesamte Ausführungszeit.

Wenn die Abfrage nicht neu zugewiesen werden kann, wird sie abgebrochen und in der neuen Warteschlange neu gestartet. Zwischenergebnisse werden gelöscht. Die Abfrage wird in die Warteschlange eingereiht und ausgeführt, sobald ausreichend Slots verfügbar sind.

QMR-Hopping-Aktionen

In der folgenden Tabelle ist das Verhalten der verschiedenen Abfragetypen bei einer QMR-Hopping-Aktion zusammengefasst.

Abfragetyp Action
COPY Ausführung wird fortgesetzt
Wartungsoperationen Ausführung wird fortgesetzt
Benutzerdefinierte Funktionen (User-defined functions, UDFs) Ausführung wird fortgesetzt
UNLOAD Neuzuweisung oder Fortsetzung der Ausführung
INSERT, UPDATE und DELETE Neuzuweisung oder Fortsetzung der Ausführung
Schreibgeschützte Abfragen mit dem Status returning Neuzuweisung oder Fortsetzung der Ausführung
Schreibgeschützte Abfragen mit dem Status running Neuzuweisung oder Neustart
CREATE TABLE AS (CTAS), SELECT INTO Neuzuweisung oder Neustart

Um herauszufinden, ob eine von QMR gehoppte Abfrage neu zugewiesen, neu gestartet oder abgebrochen wurde, fragen Sie die STL_WLM_RULE_ACTION-Systemprotokolltabelle ab.

Nach QMR-Hopping-Aktionen neu zugewiesene und neu gestartete Abfragen

Wenn für eine Abfrage Hopping ausgeführt, aber keine passende Warteschlange gefunden wird, wird die Abfrage abgebrochen.

Wenn für eine Abfrage Hopping ausgeführt und eine passende Warteschlange gefunden wird, versucht WLM, die Abfrage einer neuen Warteschlange zuzuweisen. Wenn eine Abfrage nicht neu zugewiesen werden kann, wird sie in der neuen Wartschlange neu gestartet oder in der ursprünglichen Warteschlange weiter ausgeführt, wie nachfolgend beschrieben.

Eine Abfrage wird nur dann neu zugewiesen, wenn alle folgenden Bedingungen zutreffen:

  • Es wird eine passende Warteschlange gefunden.

  • Die neue Warteschlange enthält ausreichend freie Slots zum Ausführen der Warteschlange. Eine Abfrage benötigt möglicherweise mehrere Slots, wenn der wlm_query_slot_count-Parameter einen höheren Wert als 1 enthält.

  • Die neue Warteschlange verfügt über mindestens soviel Arbeitsspeicher wie derzeit von der Abfrage verwendet.

Wenn die Abfrage neu zugewiesen wird, wird sie in der neuen Warteschlange weiter ausgeführt. Da Zwischenergebnisse beibehalten werden, gibt es nur minimale Auswirkungen auf die gesamte Ausführungszeit.

Wenn eine Abfrage nicht neu zugewiesen werden kann, wird sie entweder neu gestartet oder in der ursprünglichen Warteschlange weiter ausgeführt. Wenn die Abfrage neu gestartet wird, wird sie abgebrochen und in der neuen Warteschlange neu gestartet. Zwischenergebnisse werden gelöscht. Die Abfrage wartet in der Warteschlange und wird ausgeführt, sobald ausreichend Slots verfügbar sind.