Le connessioni di controllo postgres sono attive

Le connessioni di controllo postgres sono attive
PostgreSQL è uno dei miei sistemi di gestione dei database preferiti. È potente, facile da lavorare e utilizza query SQL native molto familiari.

Una potente caratteristica di PostgreSQL è la possibilità di recuperare informazioni in query minime SQL. Questo perché ha schemi e tabelle ben organizzate e riservate per informazioni specifiche, incluso il monitoraggio dell'attività del server.

Questo tutorial ti guiderà attraverso vari modi per identificare le connessioni e le attività del server utilizzando il server. Questo può aiutarti a identificare le connessioni, gestirle o terminarle se non sono utili.

Il catalogo del sistema postgresql

Prima di poter interrogare PostgreSQL per connessioni attive sul server, facciamo capire dove si verificano questa raccolta di informazioni.

PostgreSQL contiene uno schema con tabelle e viste popolate con informazioni sui metadati su altri oggetti nel server. Questo è simile alla tabella Information_Schema in MySQL.

Lo schema del catalogo del sistema consente di raccogliere informazioni sul sistema, inclusi processi di sistema, indici, accesso alla tabella, metodo di accesso ai dati e molti altri.

Poiché il catalogo del sistema è enorme e contiene carichi e carichi di informazioni, non possiamo coprirlo in un articolo. Tuttavia, esiste una tabella a cui siamo interessati: PG_STAT_ACTIVITY.

Questa tabella mostra un registro delle connessioni stabilite al server e ai dati corrispondenti, al database collegato, al PID del suo processo equivalente e molto di più.

PG_STAT_ACTIVITY

Le informazioni che possiamo raccogliere dalla tabella PG_STAT_ACTIVITY includono quanto segue

  • Datid - Mostra l'OID del database a cui è collegata la connessione.
  • DatName - Il nome della connessione del database.
  • pid - processi ID della connessione.
  • usasid - Oid dell'utente effettuato.
  • Usename - Il nome dell'utente ha effettuato l'accesso.
  • Nome dell'applicazione - Il nome dell'applicazione collegato in una sessione specifica
  • client_addr - Indirizzo IP del client associato a una connessione specifica.
  • client_hostname - Il nome host del client di una connessione specifica.
  • client_port - Questo mostra il numero di porta TCP utilizzato per connettersi al server da un client set.
  • backend_start - Quando il processo avviato, corrisponde al momento in cui un client è collegato al server.
  • query_stat - Il tempo in cui è iniziata la query attualmente in esecuzione. Se non esiste una query attiva, mostra la query_stat della query precedente.
  • stato - stato attuale della connessione. Questo può essere inattivo, attivo, disabilitato, inattivo in una transazione, inattivo nella transazione (abortita) e chiamata di funzione FastPath.
  • Domanda - mostra la domanda più recente dalla connessione.
  • In attesa - vero o falso se una connessione è in attesa di un blocco.

Con tali informazioni, ora possiamo interrogare informazioni dettagliate sulle connessioni attive nel server.

Come interrogare le connessioni attive

Per interrogare per connessioni attive, iniziamo accedendo al server. Se si utilizza l'installazione di PostgreSQL predefinita, utilizzare PSQL con il nome utente e la password come

Psql -u Postgres -w
Parola d'ordine:
PSQL (13.3)

Digita "aiuto" per l'aiuto.

Iniziamo raccogliendo tutte le informazioni dalla tabella PG_STAT_ACTIVITY. Usa la query come mostrato di seguito

Seleziona * da pg_stat_activity;

Una volta eseguita la query sopra, PostgreSQL scaricherà molte informazioni su di te, la maggior parte delle quali potresti non aver bisogno. Per risolvere questo problema, possiamo selezionare colonne specifiche come mostrato nella query seguente:

Seleziona DatName come database_name,
PID come processo_id,
Usename come nome utente,
Nome dell'applicazione,
client_addr come host,
client_port come porta,
stato,
Domanda
da pg_stat_activity;

Questo selezionerà solo le informazioni necessarie e le organizzerà in modo tabulare, come mostrato nello screenshot.

Infine, possiamo filtrare laddove lo stato non è uguale a attivo per raccogliere solo le connessioni attive.

La domanda per questo è:

Seleziona DatName come database_name,
PID come processo_id,
Usename come nome utente,
Nome dell'applicazione,
client_addr come host,
client_port come porta,
stato,
Domanda
da pg_stat_activity
Dove lo stato "inattivo";

Questo mostrerà un output simile a quello mostrato di seguito:

Infine, un modo semplice per ottenere informazioni simili è usare pgadmin. PGADMIN è un potente strumento di amministrazione della GUI per il database PostgreSQL.

Una volta effettuato l'accesso a pgadmin, vai alla dashboard e vai su server_activity. Aggiorna per mostrarti tutte le connessioni.

Conclusione

Questa guida ha esaminato come interrogare le attività di connessione da PostgreSQL utilizzando la tabella PG_STAT_ACTIVITY e PGADMIN.