Mentre lavoriamo nel database di PostgreSQL, potremmo incontrare situazioni in cui alcuni dei processi vengono interrotti o impiccati e non li vogliamo più. Ogni utente di database proverà a rimuovere o terminare tali connessioni dal sistema di database in tale situazione. PostgreSQL ha escogitato semplici istruzioni per farlo. Fornisce la funzione pg_cancel_backed () e pg_terminate_backend () per utilizzare l'ID di processo per una particolare query per annullarlo e terminarlo insieme alla connessione che contiene in pochi secondi. All'interno di questa guida, discuteremo di utilizzare entrambe le funzioni nelle nostre query di database per uccidere le domande.
Usando PostgreSQL PGADMIN GUI:
Iniziamo con la semplice illustrazione dell'uccisione di una sessione di un database PostgreSQL utilizzando l'ID processo nella query. Inizieremo dall'interfaccia GUI PGADMIN del database PostgreSQL. Aprilo usando la barra di ricerca del sistema Windows 10. Aggiungi la password per il server e il database. Nel nostro caso, il database è "Aqsayasin". È necessario aprire lo "strumento di query" del tuo database utilizzando l'icona dello strumento query tenuto nella parte superiore della GUI PGADMIN.
Mostriamo tutte le sessioni o i processi di PostgreSQL nell'area di query. Per questo, è necessario utilizzare la query seleziona con il cartello "*" insieme alla parola chiave "pg_stat_activity". Eseguire questa query usando il cartello "Triangle" alla barra delle task query PGADMIN. Tutti i processi attuali saranno mostrati nell'area di output dei dati di PGADMIN come di seguito. Sono stati trovati un totale di 8 record.
Uccidiamo un processo di ID "908". Dobbiamo utilizzare due funzioni all'interno della query seleziona nell'area di query per uccidere un processo. Il primo è la funzione pg_cancel_backend () e la seconda è pg_terminate_backend (). La funzione pg_cancel_backend () viene utilizzata per annullare semplicemente la query di un database utilizzando l'ID processo per una particolare query. Non termina la connessione del database. Mentre la funzione pg_terminate_backend () annulla la query utilizzando l'ID processo per la query e chiude il database connesso. Quindi, abbiamo utilizzato entrambe le domande contemporaneamente sullo stesso strumento di query per uccidere il processo con ID "908". In esecuzione, abbiamo il valore booleano "vero" sotto la colonna "pg_terminate_background". Ciò significa che la query e la connessione sono state terminate correttamente.
Vediamo se la query selezionata dal suo ID di processo è stata terminata o meno. Per questo, abbiamo utilizzato di nuovo la query seleziona con la parola chiave "pg_stat_activity". La griglia di output mostra che la query "908" è sparita.
Reniamo più chiaro selezionando solo le query con stato uguale a "inattivo". La stessa query verrà utilizzata con la clausola Where per mettere la condizione di "State =" Idle ". In cambio, abbiamo solo due risultati per le domande con uno stato "inattivo". Uccidiamo il processo ID "7316".
Per uccidere la query di ID di processo "7316", dobbiamo prima annullarlo usando la stessa query "Seleziona" con la funzione "PG_Cancel_backend ()", prendendo l'ID di processo come argomento. Esegui la query mostrata nell'area di query con il pulsante di esecuzione tenuto sulla barra delle applicazioni GUI PGADMIN. L'output mostra il valore booleano "true" nella colonna colonna "pg_cancel_backend". Ciò significa che la query per un determinato processo è stata finalmente annullata.
Terminiamo la query insieme alla connessione del database. Quindi, l'istruzione selezionata è stata utilizzata ancora una volta finora con la funzione "pg_terminate_backend ()". L'ID processo è stato menzionato nell'argomento della funzione "pg_terminate_backend ()". L'output per questo programma visualizza il valore booleano "vero" sotto la colonna "pg_terminate_backend". Ciò significa che la query con ID di processo "7316" è finalmente terminata e la connessione per questa query viene terminata insieme ad essa.
Vediamo se riusciamo a trovare la query appena annullata e terminata con ID di processo 7316 nell'area di uscita o no. Quindi, abbiamo utilizzato la stessa query selezionata con la parola chiave "pg_stat_activity" ed eseguito sullo strumento di query di Postregsql PGadmin. Non mostra l'ID query/ processo specificato nell'output, che afferma che è già andato.
Utilizzo della console di shell PostgreSQL:
Tutto quello che abbiamo fatto è uccidere la query con la sua connessione all'interno della GUI PGADMIN di Postgresql. Possiamo anche raggiungerlo utilizzando il terminale di shell PostgreSQL. Cerca nell'applicazione Windows 10 utilizzando la barra di ricerca sul desktop. Scrivi "PSQL" e fai clic su di esso dopo aver mostrato. Si aprirà come uno schermo nero che ti chiede di aggiungere il nome dell'host locale che possiedi. Aggiungilo e premi Invio. Chiederà il nome del database su cui si desidera lavorare. Se non nessuno, usa i "Postgres" predefiniti. Finora abbiamo utilizzato il database "Aqsayasin" e il numero di porta 5432. Abbiamo aggiunto il nome utente e la sua password già creata nel nostro database, i.e., aqsayasin. Se non hai creato utente, vai con il nome utente "Postgres" predefinito. Dopo che tutte le credenziali sono state aggiunte, la shell PostgreSQL è pronta per essere utilizzata.
Prima di uccidere qualsiasi domanda specifica con il suo ID di processo, dobbiamo vedere le query e le sessioni del nostro database "Aqsayasin" attualmente funzionanti, attive e presentate del nostro database "Aqsayasin". Pertanto, utilizzeremo un comando "seleziona" nella shell insieme alle colonne di informazioni che vogliamo visualizzare per la query specifica tramite l'utilità PG_STAT_ACTIVITY del database PostgreSQL.
Supponiamo che tu voglia vedere l'ID processo di una query, il nome utente con cui questa query è stata eseguita, il database in cui è stata utilizzata questa query e lo stato di una query. Abbiamo dichiarato tutti i nomi delle colonne che vogliamo prendere per le domande. L'istruzione selezionata ha restituito 9 record. Abbiamo un totale di 1 query attiva e 3 query/attività inattivo.
Proviamo a rimuovere le domande con uno stato "inattivo". Quindi abbiamo utilizzato l'ID di processo "10892" per rimuovere la domanda correlata ad esso. Abbiamo usato prima il metodo "pg_cancel_backend" per annullarlo, quindi la funzione "pg_terminate_backend ()" per terminarlo insieme alla connessione. Entrambe le domande restituiscono "T" come vero per l'annullamento e la rimozione.
Dopo essere rimossa 1 query sullo stato "inattivo", rimuoviamo anche la query con l'ID di processo "12488". Gli stessi comandi sono stati usati qui separatamente sul terminale. Entrambi restituiscono un "vero" valore booleano, il che implica che la query e la connessione specifiche sono sparite.
Lo stesso processo è stato nuovamente utilizzato per la query con ID processo "11164" come mostrato.
Dopo aver ucciso 3 domande "inattivo" con i loro ID del processo, vediamo se ha avuto successo o no. Utilizzare la stessa istruzione Seleziona utilizzando l'utilità "PG_STAT_ACTIVITY" per visualizzare l'elenco di tutte le query/processi del sistema di database. L'output mostra che tutte le query "inattiva" sono state rimosse e terminate in modo permanente finora.
Conclusione:
Questo tutorial è una semplice guida all'utilizzo della funzione pg_cancel_backend () e pg_terminate_backend () per uccidere la query specifica e la sua connessione. Lo scopo principale di utilizzare queste funzioni nelle query è semplicemente rimuovere le query indesiderate o le sessioni di database, i.e., oziare. Pertanto, questo articolo ha ben spiegato l'idea di pulire il sistema di database da query e connessioni indesiderate e "inattive" in pochi secondi.