Während wir in der PostgreSQL -Datenbank arbeiten, können wir auf Situationen stoßen, in denen einige der Prozesse gestoppt oder gehängt werden, und wir wollen sie nicht mehr. Jeder Datenbankbenutzer versucht, solche Verbindungen aus dem Datenbanksystem in einer solchen Situation zu entfernen oder zu beenden. PostgreSQL hat einfache Anweisungen dafür gefunden, dies zu tun. Es liefert die Funktion PG_CANCEL_BACKED () und PG_terminate_backend (), um die Prozess -ID für eine bestimmte Abfrage zu verwenden, um sie zusammen mit der Verbindung innerhalb weniger Sekunden abzubrechen und zu beenden. Innerhalb dieses Handbuchs werden wir mit beiden Funktionen in unseren Datenbankabfragen besprochen, um die Abfragen zu töten.
Verwenden von PostgreSQL Pgadmin GUI:
Beginnen wir mit der einfachen Illustration, eine Sitzung einer PostgreSQL -Datenbank mithilfe der Prozess -ID in der Abfrage zu töten. Wir werden von der Pgadmin -GUI -Schnittstelle der PostgreSQL -Datenbank beginnen. Öffnen Sie es mit der Suchleiste Ihres Windows 10 -Systems. Fügen Sie das Kennwort für Ihren Server und Ihre Datenbank hinzu. In unserem Fall lautet die Datenbank "Aqsayasin". Sie müssen das „Abfragetool“ Ihrer Datenbank mit dem Symbol für das Abfragetool an der Spitze der Pgadmin -GUI öffnen.
Lassen Sie uns alle Sitzungen oder Prozesse von PostgreSQL auf dem Abfragebereich anzeigen. Dafür müssen Sie die Abfrage mit dem Zeichen "*" zusammen mit dem Schlüsselwort "pg_stat_Activity" verwenden. Führen Sie diese Abfrage mit dem "Dreieck" -Schild in der PGADMIN -Abfrage -Taskleiste aus. Alle aktuellen Prozesse werden in Ihrem Datenausgangsbereich von pgadmin wie unten angezeigt. Insgesamt wurden 8 Aufzeichnungen gefunden.
Lassen Sie uns einen Prozess von ID "908" töten. Wir müssen zwei Funktionen innerhalb der Auswahlabfrage im Abfragebereich verwenden, um einen Prozess zu töten. Die erste ist die Funktion pg_cancel_backend () und die zweite ist pg_terminate_backend () Funktion. Die Funktion PG_CANCEL_BACKEND () wird verwendet, um die Abfrage einer Datenbank mit der Prozess -ID für eine bestimmte Abfrage einfach abzubrechen. Es endet nicht die Datenbankverbindung. Während die Funktion pg_termate_backend () die Abfrage mithilfe der Prozess -ID für die Abfrage abbricht und die angeschlossene Datenbank schaltet. Daher haben wir beide Abfragen gleichzeitig im selben Abfrage -Tool verwendet, um den Prozess mit ID "908" zu töten. Bei der Ausführung haben wir den booleschen Wert "wahr" unter der Spalte "PG_termate_background". Dies bedeutet, dass Abfrage und Verbindung erfolgreich beendet wurden.
Mal sehen, ob die ausgewählte Abfrage aus ihrer Prozess -ID beendet wurde oder nicht. Dafür haben wir die Auswahl der Abfrage erneut mit dem Schlüsselwort „PG_STAT_ACTIVITIVITY“ verwendet. Das Ausgangsraster zeigt, dass die Abfrage „908“ verschwunden ist.
Machen wir es klarer, indem wir nur die Abfragen ausgewählt haben, die den Status mit „Leerlauf“ entsprechen, der „im Leerlauf“ entspricht. Die gleiche Abfrage wird mit der Where -Klausel verwendet, um die Bedingung von „State = 'im Leerlauf“ zu setzen. Im Gegenzug haben wir nur zwei Ergebnisse für Anfragen mit einem "Leerlauf" -Status erzielt. Lassen Sie uns die Prozess -ID "7316" töten.
Um die Abfrage der Prozess -ID "7316" abzugeben, müssen wir sie zunächst mit derselben "Auswählen" -Anfrage mit der Funktion "pg_cancel_backend ()" abbrechen und die Prozess -ID als Argument nehmen. Führen Sie die angezeigte Abfrage im Abfragebereich mit der Run -Taste in der PGADMIN -GUI -Taskleiste aus. Die Ausgabe zeigt den booleschen Wert „True“ unter der Spalte "pg_cancel_backend" in der Spalte "pg_cancel_backend". Dies bedeutet, dass die Abfrage für einen bestimmten Prozess endlich abgesagt wurde.
Lassen Sie uns die Abfrage zusammen mit der Datenbankverbindung beenden. Daher wurde die Auswahlanweisung bisher noch einmal mit der Funktion „pg_terminate_backend ()“ verwendet. Die Prozess -ID wurde im Argument der Funktion „pg_terminate_backend ()“ erwähnt. Die Ausgabe für dieses Programm zeigt den booleschen Wert „True“ unter der Spalte "pg_terminate_backend" an. Dies bedeutet.
Mal sehen, ob wir die gerade stornierte und beendete Abfrage mit der Prozess -ID 7316 auf dem Ausgangsbereich finden können oder nicht. Wir haben also die gleiche Auswahlabfrage mit dem Schlüsselwort „pg_stat_Activity“ verwendet und es im Abfragetool von postregsql pgadmin ausgeführt. Es zeigt nicht die angegebene Abfrage-/ Prozess -ID in der Ausgabe an, die besagt, dass es bereits verschwunden ist.
Verwenden von PostgreSQL Shell Console:
Alles, was wir getan haben, ist die Abfrage mit ihrer Verbindung innerhalb der Pgadmin -GUI von Postgresql zu töten. Wir können es auch erreichen, indem wir das PostgreSQL -Shell -Terminal verwenden. Suchen Sie in der Windows 10 -Anwendung mit der Suchleiste auf Ihrem Desktop danach danach. Schreiben Sie "PSQL" und klicken Sie darauf, wenn Sie angezeigt werden. Es wird als schwarzer Bildschirm geöffnet, in dem Sie aufgefordert werden, den Namen des lokalen Hosts hinzuzufügen, den Sie besitzen. Fügen Sie das hinzu und drücken Sie die Eingabetaste. Es wird nach dem Datenbanknamen gefragt, an dem Sie arbeiten möchten. Wenn nicht, verwenden Sie den Standard "Postgres". Wir haben die Datenbank "aqsayasin" bisher und die Portnummer 5432 verwendet. Wir haben den Benutzernamen und sein Passwort hinzugefügt, das bereits in unserer Datenbank erstellt wurde, ich.e., aqsayasin. Wenn Sie keine vom Benutzer erstellte Benutzer haben, gehen Sie mit dem Standard-Benutzernamen "Postgres". Nachdem alle Anmeldeinformationen hinzugefügt wurden, ist Ihre Postgresql -Shell bereit zu werden.
Bevor wir eine bestimmte Abfrage mit seiner Prozess -ID getötet haben, müssen wir die aktuell funktionierenden, aktiven, untätigen und gerade vorgelegten Abfragen und Sitzungen unserer Datenbank „Aqsayasin“ vorlegen. Daher verwenden wir zusammen mit den Informationen, die wir für die spezifische Abfrage anzeigen möchten.
Nehmen wir an, Sie möchten die Prozess -ID einer Abfrage, den Benutzernamen, durch den diese Abfrage ausgeführt wurde,, die Datenbank, in der diese Abfrage verwendet wurde, und den Status einer Abfrage sehen möchten. Wir haben alle Spaltennamen angegeben, die wir für Abfragen holen möchten. Die Auswahl der Anweisung wurde 9 Datensätze zurückgegeben. Wir haben insgesamt 1 aktive Abfrage und 3 Leerlaufanfragen/Aktivitäten.
Lassen Sie uns versuchen, die Fragen mit einem Zustand „untätig“ zu entfernen. Wir haben also die Prozess -ID "10892" verwendet, um die damit verbundene Abfrage zu entfernen. Wir haben die Methode "pg_cancel_backend" verwendet, um sie zuerst abzusagen, dann die Funktion "pg_termate_backend ()", um sie zusammen mit der Verbindung zusammen mit der Verbindung zu beenden. Beide Abfragen geben „T“ als Stornierung und Entfernen zurück.
Nachdem 1 "Leerlauf" -Statusabfrage entfernt wurde, entfernen wir die Abfrage auch mit der Prozess -ID "12488". Die gleichen Befehle wurden hier bisher getrennt am Terminal verwendet. Beide geben „True“ Boolean Value Returns zurück, was bedeutet, dass die spezifische Abfrage und die Verbindung verschwunden sind.
Der gleiche Vorgang wurde für die Abfrage mit der Prozess -ID „11164“ wie gezeigt erneut verwendet.
Nachdem wir 3 'idle' Abfragen mit ihren Prozess -IDs getötet haben, sehen wir sehen, ob es erfolgreich war oder nicht. Verwenden Sie den gleichen Auswahlanweis mit dem Dienstprogramm „pg_stat_Activity“, um die Liste aller Abfragen/Prozesse des Datenbanksystems anzuzeigen. Die Ausgabe zeigt, dass alle „Leerlauf“ -Anfragen dauerhaft entfernt und bisher beendet wurden.
Abschluss:
Dieses Tutorial ist eine einfache Anleitung zur Verwendung der Funktion pg_cancel_backend () und pg_terminate_backend (), um die spezifische Abfrage und ihre Verbindung abzutöten. Der Hauptzweck der Verwendung dieser Funktionen in den Abfragen besteht darin, einfach die unerwünschten Abfragen oder Datenbanksitzungen zu entfernen.e., Leerlauf. Daher hat dieser Artikel die Idee, Ihr Datenbanksystem von unerwünschten und „Leerlauf“ -Anfragen und Verbindungen zu reinigen.