🧚 Hör mal! Beekeeper Studio ist eine schnelle, moderne und quelloffene Datenbank-GUI Download
15. Juli 2024 Von Matthew Rathbone

Eine Abfrage beenden

Bevor du eine Abfrage beenden kannst, musst du herausfinden, welche Abfragen Probleme verursachen. Mit folgendem SQL listest du alle laufenden Abfragen samt ihrer Laufzeit auf:

SELECT
    pid,
    user_name,
    starttime,
    query,
    elapsed
FROM
    stv_recents
WHERE
    state = 'Running'
ORDER BY
    elapsed DESC;

Erwartete Ausgabe:

pid user_name starttime query elapsed
123 admin 2023-10-01 10:00:00 SELECT * FROM ? 01:20:15
456 analyst 2023-10-01 10:45:00 UPDATE table ? 00:35:10
… … … … …

Die Spalte elapsed zeigt, wie lange die Abfrage schon läuft.

Sobald du die problematische Abfrage gefunden hast (über die pid aus der Liste oben), kannst du sie beenden. Verwende dazu folgenden Befehl:

CANCEL pid;

Beispiel:

CANCEL 123;

Das Beenden der Abfrage überprüfen

Um sicherzugehen, dass die Abfrage beendet wurde, führe die erste Abfrage erneut aus:

SELECT
    pid,
    user_name,
    starttime,
    query,
    elapsed
FROM
    stv_recents
WHERE
    state = 'Running'
ORDER BY
    elapsed DESC;

Die beendete Abfrage sollte nicht mehr in den Ergebnissen auftauchen.

Blockierte Abfragen behandeln

Manchmal werden Abfragen blockiert und müssen beendet werden, um Ressourcen freizugeben. Blockierte Abfragen findest du über die Tabelle STV_BLOCKED.

SELECT
    b.pid,
    b.user_name,
    b.db,
    b.query,
    l.pid AS blocked_by_pid,
    l.user_name AS blocked_by_user
FROM
    stv_blocked b
JOIN
    stv_locks l
ON
    b.lock_owner_pid = l.pid;

Erwartete Ausgabe:

pid user_name db query blocked_by_pid blocked_by_user
5678 analytics reporting SELECT count(*) FROM ?; 9101 Admin

Um eine blockierte Abfrage zu beenden, nutze wie oben gezeigt den Befehl CANCEL:

CANCEL 5678;

Das Beenden von Abfragen automatisieren

Bei Datenbanken mit hohen Performance-Anforderungen kann es sich lohnen, das Erkennen und Beenden lang laufender Abfragen zu automatisieren. Hier ist eine Beispielprozedur, die Abfragen beendet, die länger als ein festgelegter Schwellenwert laufen:

DO $$ 
DECLARE
    long_running_query RECORD;
BEGIN
    FOR long_running_query IN
        SELECT pid
        FROM stv_recents
        WHERE state = 'Running'
        AND elapsed > interval '00:30:00' -- Replace with desired threshold
    LOOP
        EXECUTE 'CANCEL ' || long_running_query.pid;
    END LOOP;
END;
$$;

Wichtige Hinweise

  • Berechtigungen: Nur Benutzer mit den passenden Berechtigungen können Abfragen abbrechen.
  • Auswirkungen: Das Beenden einer Abfrage kann die Performance der Anwendung beeinträchtigen oder bei falscher Durchführung zu inkonsistenten Daten führen.
  • Monitoring: Regelmäßiges Überwachen der Abfrage-Performance hilft, Probleme früh zu erkennen.

Fazit

Wenn du lang laufende Abfragen effektiv verwaltest, sorgst du für optimale Performance deines Amazon-Redshift-Clusters. Mit diesen Schritten kannst du problematische Abfragen schnell finden und beenden. Automatisierte Lösungen für regelmäßiges Monitoring und das Beenden von Abfragen helfen zusätzlich, die Performance zu halten.

Teste alle Befehle und Skripte in einer Nicht-Produktionsumgebung, bevor du sie in Produktion einsetzt, um ungewollte Ausfälle zu vermeiden.

Weitere Beiträge, die dir gefallen könnten:

Beekeeper Studio ist eine kostenlose & quelloffene Datenbank-GUI

Das beste SQL-Abfrage- & Editor-Tool, das ich je benutzt habe. Es bietet alles, was ich zum Verwalten meiner Datenbank brauche. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio ist schnell, intuitiv und einfach zu bedienen. Beekeeper unterstützt jede Menge Datenbanken und läuft hervorragend auf Windows, Mac und Linux.

Die Linux-Version von Beekeeper hat 100% des Funktionsumfangs, ohne Abstriche und ohne Kompromisse.

Was Nutzer über Beekeeper Studio sagen

★★★★★
„Beekeeper Studio hat meinen alten SQL-Workflow komplett ersetzt. Es ist schnell, intuitiv und macht die Arbeit mit Datenbanken wieder zum Vergnügen.“
— Alex K., Datenbankentwickler
★★★★★
„Ich habe viele Datenbank-GUIs ausprobiert, aber Beekeeper trifft genau die richtige Balance zwischen Funktionsumfang und Einfachheit. Es funktioniert einfach.“
— Sarah M., Full Stack Engineer

Bereit, deinen SQL-Workflow zu verbessern?

download Kostenlos herunterladen