Postgres Zabij zapytanie pid

Postgres Zabij zapytanie pid

Podczas pracy w bazie danych PostgreSQL możemy napotkać sytuacje, w których niektóre procesy są wstrzymywane lub powieszone, i już ich nie chcemy. Każdy użytkownik bazy danych będzie próbował usunąć lub zakończyć takie połączenia z systemu bazy danych w takiej sytuacji. PostgreSQL wymyślił proste instrukcje, aby to zrobić. Zapewnia funkcję PG_CANCEL_BACED () i PG_TERMINE_BACKEND (. W ramach tego przewodnika omówimy przy użyciu obu funkcji w naszych zapytaniach dotyczących bazy danych w celu zabicia zapytań.

Korzystanie z GUI PGRESQL PGADMIN:

Zacznijmy od prostej ilustracji zabicia sesji bazy danych PostgreSQL za pomocą identyfikatora procesu w zapytaniu. Zaczniemy od interfejsu PGADMIN GUI bazy danych PostgreSQL. Otwórz go za pomocą paska wyszukiwania systemu Windows 10. Dodaj hasło dla swojego serwera i bazy danych. W naszym przypadku baza danych to „aqsayasin”. Musisz otworzyć „narzędzie do zapytań” swojej bazy danych za pomocą ikony narzędzia zapytań utrzymywanego na górze PGADMIN GUI.

Wyświetlmy wszystkie sesje lub procesy PostgreSQL w obszarze zapytania. W tym celu musisz użyć zapytania Wybierz ze znakiem „*” wraz ze słowem kluczowym „PG_STAT_ACTIVITY”. Wykonaj to zapytanie za pomocą znaku „Trójkąt” na pasku zadań PGADMIN zapytanie. Wszystkie bieżące procesy zostaną pokazane w obszarze wyjściowego danych PGADMIN. Znaleziono w sumie 8 rekordów.

Zabijmy proces ID „908”. Musimy wykorzystać dwie funkcje w wyniku zapytania w obszarze zapytania, aby zabić proces. Pierwszy to funkcja pg_cancel_backend (), a druga to funkcja pg_terminate_backend (). Funkcja PG_CANCEL_BACKEND () służy do po prostu anulowania zapytania bazy danych za pomocą identyfikatora procesu dla konkretnego zapytania. Nie kończy połączenia bazy danych. Podczas gdy funkcja PG_Terminate_backend () anuluje zapytanie za pomocą identyfikatora procesu dla zapytania i wyłącza podłączoną bazę danych. Tak więc korzystaliśmy z obu zapytania jednocześnie na tym samym narzędziu zapytań, aby zabić proces z identyfikatorem „908”. Po wykonaniu mamy wartość logiczną „True” pod kolumną „PG_TERMINE_BACKROUND”. Oznacza to, że zapytanie i połączenie zostały pomyślnie rozwiązane.

Zobaczmy, czy wybrane zapytanie z jego identyfikatora procesu zostało zakończone, czy nie. W tym celu ponownie wykorzystaliśmy zapytanie z słowem kluczowym „PG_STAT_ACTIVITY”. Siatka wyjściowa pokazuje, że zapytanie „908” zniknęło.

Wyjaśnijmy to, wybierając jedynie zapytania o stan, równa się „bezczynności”. To samo zapytanie zostanie użyte z klauzulą ​​Where, aby umieścić stan „stan =„ bezczynny ””. W zamian mamy tylko dwa wyniki dla zapytań o stan „bezczynności”. Zabijmy identyfikator procesu „7316”.

Aby zabić zapytanie identyfikatora procesu „7316”, musimy najpierw anulować za pomocą tego samego zapytania „Wybierz” z funkcją „PG_CANCEL_BACKEND ()”, biorąc identyfikator procesu jako argument. Uruchom pokazane zapytanie w obszarze zapytania z przyciskiem przebiegu trzymanego na pasku zadań GUI PGADMIN. Wyjście pokazuje wartość logiczną „True” w kolumnie kolumny „PG_CANCEL_BACKEND”. Oznacza to, że zapytanie dla określonego procesu zostało w końcu anulowane.

Zakończmy zapytanie wraz z połączeniem bazy danych. Tak więc do tej pory używana instrukcja wybrana została ponownie użyta z funkcją „pg_terminate_backend ()”. Identyfikator procesu został wspomniany w argumencie funkcji „pg_terminate_backend ()”. Wyjście tego programu wyświetla wartość „prawdziwej” logicznej w kolumnie „PG_TERMINE_BACKIND”. Oznacza to, że zapytanie o identyfikator procesu „7316” ostatecznie zakończył się, a połączenie tego zapytania zostało zakończone wraz z nim.

Zobaczmy, czy możemy znaleźć właśnie anulowane i zakończone zapytanie o identyfikator procesu 7316 na obszarze wyjściowym, czy nie. Tak więc zastosowaliśmy to samo zapytanie do wyboru ze słowem kluczowym „PG_STAT_ACTIVITY” i wykonaliśmy je na narzędziu zapytania Pgadmin Postregsql. Nie pokazuje określonego identyfikatora zapytania/ procesu w wyjściu, który stwierdza, że ​​już poszedł.

Korzystanie z konsoli powłoki PostgreSQL:

Wszystko, co zrobiliśmy, to zabić zapytanie z jego połączeniem w ramach GUI PGADMIN PostgreSql. Możemy to również osiągnąć za pomocą terminalu powłoki PostgreSQL. Wyszukaj go w aplikacji Windows 10 za pomocą paska wyszukiwania na pulpicie. Napisz „PSQL” i kliknij go po pokazaniu. Otworzy się jako czarny ekran z prośbą o dodanie własnego nazwiska lokalnego hosta. Dodaj to i naciśnij Enter. Poprosi o nazwę bazy danych, nad którą chcesz pracować. Jeśli nie, użyj domyślnej „Postgres”. Do tej pory używamy bazy danych „Aqsayasin” i numeru portu 5432. Dodaliśmy nazwę użytkownika i jej hasło już utworzone w naszej bazie danych, i.mi., aqsayasin. Jeśli nie masz żadnych twoich użytkowników, idź z domyślną nazwą użytkownika „Postgres”. Po dodaniu wszystkich poświadczeń twoja powłoka PostgreSQL jest gotowa do użycia.

Przed zabiciem jakiegokolwiek konkretnego zapytania z jego identyfikatorem procesu musimy zobaczyć obecnie działające, aktywne, bezczynne i właśnie przedstawione zapytania i sesje naszej bazy danych „Aqsayasin”. Dlatego będziemy używać polecenia „Wybierz” w powładzie wraz z kolumnami informacyjnymi, które chcemy wyświetlić dla określonego zapytania za pośrednictwem narzędzia PG_STAT_ACTIVITY bazy danych PostgreSQL.

Powiedzmy, że chcesz zobaczyć identyfikator procesu zapytania, nazwa użytkownika, według której to zapytanie zostało wykonane, baza danych, w której użyto tego zapytania, oraz stan zapytania. Stwierdziliśmy wszystkie nazwy kolumn, które chcemy pobrać na zapytania. Wybierz instrukcję zwróciła 9 rekordów. Mamy w sumie 1 aktywne zapytanie i 3 bezczynne zapytania/działania.

Spróbujmy usunąć zapytania o stan „bezczynności”. Używamy więc identyfikatora procesu „10892”, aby usunąć z nim powiązane zapytanie. Najpierw użyliśmy metody „PG_CANCEL_BACKEND”, aby ją anulować, a następnie funkcję „PG_TERMINE_BACKEND ()”, aby ją zakończyć wraz z połączeniem. Oba zapytania zwracają „t” jako prawdziwe w celu anulowania i usuwania.

Po usunięciu zapytania 1 „Idle”, usuńmy również zapytanie za pomocą identyfikatora procesu „12488”. Te same polecenia zostały tu użyte osobno na terminalu. Oba zwracają „prawdziwą” wartość logiczną, co oznacza, że ​​konkretne zapytanie i połączenie zniknęły.

Ten sam proces został ponownie użyty do zapytania z identyfikatorem procesu „11164”, jak pokazano.

Po zabiciu 3 „bezczynnych” zapytania za pomocą ich identyfikatorów procesu, zobaczmy, czy to się powiedzie, czy nie. Użyj tej samej instrukcji Wybierz za pomocą narzędzia „PG_STAT_ACTIVITY”, aby wyświetlić listę wszystkich zapytań/procesów systemu bazy danych. Wyjście pokazuje, że wszystkie zapytania „bezczynne” zostały na stałe usunięte i zakończone do tej pory.

Wniosek:

Ten samouczek jest prostym przewodnikiem do korzystania z funkcji pg_cancel_backend () i pg_terminate_backend (), aby zabić konkretne zapytanie i jej połączenie. Głównym celem korzystania z tych funkcji w zapytaniach jest po prostu usunięcie niechcianych zapytań lub sesji bazy danych, i.mi., bezczynny. W ten sposób ten artykuł wyjaśnił pomysł czyszczenia systemu bazy danych z niechcianych i „bezczynnych” zapytań i połączeń w ciągu kilku sekund.