Postgres Kill Query PID

Postgres Kill Query PID

Mens vi jobber i PostgreSQL -databasen, kan vi møte situasjoner der noen av prosessene blir stoppet eller hengt, og vi vil ikke ha dem lenger. Hver databasebruker vil prøve å fjerne eller avslutte slike tilkoblinger fra databasesystemet i en slik situasjon. PostgreSql har kommet med enkle instruksjoner for å gjøre det. Det gir PG_CANCEL_BACKED () og PG_TERMINATE_BACKEND () -funksjonen for å bruke prosess -ID for en bestemt spørring for å avbryte og avslutte den sammen med tilkoblingen den har i løpet av noen få sekunder. Innenfor denne guiden vil vi diskutere ved bruk av begge funksjonene i våre databasespørsmål for å drepe spørsmålene.

Bruke PostgreSql Pgadmin GUI:

La oss komme i gang med den enkle illustrasjonen av å drepe en økt i en PostgreSQL -database ved å bruke prosess -IDen i spørringen. Vi starter fra Pgadmin GUI -grensesnittet til PostgreSQL -databasen. Åpne den ved hjelp av søkefeltet i Windows 10 -systemet ditt. Legg til passordet for serveren din og databasen. I vårt tilfelle er databasen "Aqsayasin". Du må åpne "spørringsverktøyet" i databasen din ved å bruke spørringsverktøyikonet som holdes øverst på PGADMIN GUI.

La oss vise alle øktene eller prosessene til PostgreSQL på spørringsområdet. For det må du bruke Select Query med “*” -tegnet sammen med nøkkelordet “PG_STAT_ACTIVITY”. Utfør denne spørringen ved å bruke "Triangle" -tegnet på PGADMin -spørringen. Alle gjeldende prosesser vil bli vist i datautgangsområdet for PGADMIN som nedenfor. Totalt er det funnet 8 poster.

La oss drepe en prosess med ID “908”. Vi må bruke to funksjoner i SELECT -spørringen på spørringsområdet for å drepe en prosess. Den første er PG_CANCEL_Backend () -funksjonen og andre er PG_TERMINATE_BACKEND () -funksjonen. PG_CANCEL_Backend () -funksjonen brukes til å bare avbryte spørringen til en database ved å bruke prosess -ID for en bestemt spørring. Det avslutter ikke databasetilkoblingen. Mens PG_TERMINATE_Backend () -funksjonen avbryter spørringen ved å bruke prosess -ID for spørringen og lukker den tilkoblede databasen. Så vi har brukt begge spørsmålene samtidig på det samme spørringsverktøyet for å drepe prosessen med ID “908”. Ved utførelse har vi fått den boolske verdien "True" under kolonnen "PG_TERMINATE_BACKGround". Dette betyr at spørringen og tilkoblingen er blitt avsluttet.

La oss se om den valgte spørringen fra prosess -IDen er avsluttet eller ikke. For dette har vi brukt Select Query igjen med nøkkelordet "PG_STAT_ACTIVITY". Utgangsnettet viser at spørringen “908” er borte.

La oss gjøre det mer tydelig ved bare å velge spørsmålene som har statlig lik "tomgang". Den samme spørringen vil bli brukt med WHERE -leddet for å sette tilstanden til “State = 'Idle'”. Til gjengjeld har vi bare to resultater for spørsmål som har en "tomgang" -stat. La oss drepe prosess -ID "7316".

For å drepe spørringen om prosess -ID “7316”, må vi avbryte den først ved å bruke den samme “Select” -spørringen med "PG_CANCEL_BACKEND ()" -funksjonen, ta prosess -ID som et argument. Kjør den viste spørringen i spørringsområdet med kjøreknappen som holdes på PGADMin GUI -oppgavelinjen. Utgangen viser den boolske verdien “True” under kolonnen “PG_Cancel_Backend”. Dette betyr at spørringen for en bestemt prosess er kansellert endelig.

La oss avslutte spørringen sammen med databasetilkoblingen. Så den utvalgte instruksjonen har blitt brukt en gang til så langt med "PG_TERMINATE_BACKEND ()" -funksjonen. Prosess -IDen er blitt nevnt i argumentet til "PG_TERMINATE_BACKEND ()" -funksjonen. Utgangen for dette programmet viser den "sanne" boolske verdien under kolonnen "PG_TERMINATE_BACKEND". Dette betyr at spørringen som har prosess -ID “7316” endelig har avsluttet, og tilkoblingen for denne spørringen avsluttes sammen med den.

La oss se om vi kan finne den nettopp kansellerte og avsluttet spørringen med prosess -ID 7316 på utgangsområdet eller ikke. Så vi har brukt den samme valgte spørringen med nøkkelordet "PG_STAT_ACTIVITY" og utført det på spørringsverktøyet til postregsql pgadmin. Den viser ikke den spesifiserte spørringen/ prosess -IDen i utdataene, som sier at den allerede har gått.

Bruke PostgreSQL Shell Console:

Alt vi har gjort er å drepe spørringen med forbindelsen i Pgadmin GUI av PostgreSQL. Vi kan også oppnå det ved å bruke PostgreSQL Shell Terminal. Søk etter det i Windows 10 -applikasjonen ved å bruke søkefeltet på skrivebordet. Skriv “PSQL” og klikk på det når du viser. Det vil åpne seg som en svart skjerm som ber deg om å legge til den lokale vertens navn du eier. Legg til det og trykk Enter. Det vil be om databasenavnet du vil jobbe med. Hvis ikke noen, bruk standard “Postgres”. Vi har brukt databasen “Aqsayasin” så langt og portnummer 5432. Vi har lagt til brukernavnet og passordet som allerede er opprettet i vår database, i.e., Aqsayasin. Hvis du ikke har noen brukeropprettet, kan du gå med standard "Postgres" brukernavn. Etter at alle legitimasjonene er lagt til, er postgreSql -skallet ditt klart til å brukes.

Før vi dreper noen spesifikk spørsmål med prosess -ID -en, må vi se den for øyeblikket fungerende, aktive, tomgang og bare presenterte spørsmål og økter i vår database "Aqsayasin". Derfor vil vi bruke en "Select" -kommando i skallet sammen med informasjonskolonnene vi ønsker å vise for den spesifikke spørringen via PG_STAT_ACTIVITY -verktøyet til PostgreSQL -databasen.

La oss si at du vil se prosess -IDen til en spørring, brukernavnet som denne spørringen er utført, databasen der denne spørringen er blitt brukt i, og tilstanden til en spørring. Vi har uttalt alle kolonnenavnene vi ønsker å hente etter spørsmål. Den utvalgte instruksjonen har returnert 9 poster. Vi har totalt 1 aktiv spørring og 3 ledige spørsmål/aktiviteter.

La oss prøve å fjerne spørsmålene som har en stat "tomgang". Så vi har brukt prosess -ID “10892” for å fjerne den relaterte spørringen til den. Vi har brukt metoden “pg_cancel_backend” først for å avbryte den, og deretter "pg_terminate_backend ()" -funksjonen for å avslutte den sammen med tilkoblingen. Begge spørsmålene returnerer “T” som sant for å kansellere og fjerne det.

La oss fjerne spørringen med prosess -ID "12488" etter at 1. De samme kommandoene har blitt brukt her separat på terminalen så langt. Begge returnerer "ekte" boolsk verdi, noe som antyder at den spesifikke spørringen og tilkoblingen er borte.

Den samme prosessen har blitt brukt igjen for spørringen med prosess -ID “11164” som vist.

Etter å ha drept 3 'Idle' spørsmål med prosess -ID -ene, la oss se om det har vært vellykket eller ikke. Bruk den samme valginstruksjonen ved å bruke verktøyet "PG_STAT_ACTIVITY" for å vise listen over alle spørsmål/prosesser i databasesystemet. Utgangen viser at alle "tomgang" -spørsmålene er blitt fjernet og avsluttet så langt permanent.

Konklusjon:

Denne opplæringen er en enkel guide for å bruke PG_CANCEL_BACKEND () og PG_TERMINATE_Backend () -funksjonen for å drepe den spesifikke spørringen og dens tilkobling. Hovedformålet med å bruke disse funksjonene i spørsmålene er å bare fjerne uønskede spørsmål eller databaseøkter, i.e., tomgang. Dermed har denne artikkelen godt forklart ideen om å rengjøre databasesystemet ditt fra uønskede og "tomgang" -spørsmål og tilkoblinger i løpet av sekunder.