PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

File ~/.psqlrc per DBA

Nel nostro monitoraggio regolare del DBA, utilizzeremo così tante combinazioni di query pg_catalog per conservare informazioni come nella transazione, query in attesa, numero di connessioni, ecc. La maggior parte dei DBA crea viste per ridurre le query combinate di grandi dimensioni e tenere a portata di mano per un uso successivo in base alle esigenze.

PostgreSQL, fornisce un file di avvio (.psqlrc) che viene eseguito prima della connessione al database quando si utilizza con l'utilità psql. Usando il file .psqlrc puoi inserire tutte le tue query importanti con un alias di parole con il comando "set" ed eseguirlo nel terminale psql invece di digitare grandi query. Se non vedrai il file .psqlrc nella home directory dell'utente "postgres", puoi crearlo esplicitamente. L'ho provato e l'ho trovato molto utile.

Punti su .psqlrc:
  • .psqlrc è un file di avvio, viene eseguito durante la connessione al cluster.
  • Il file .psqlrc risiederà nella home directory dell'utente 'postgres'.
  • Opzioni psql -X o -c, non leggere il file .psqlrc.
  • Il file .psqlrc è a livello di sessione completo e non a livello di database.

Schermata del mio terminale:

Vediamo come implementarlo.

Sintassi:

set <alias-variable-name>  'query'
Nota:se la tua query contiene virgolette singole o doppie, utilizza " o " nella query. Query di esempio da inserire nel file .psqlrc con alias:
vi ~/.psqlrc

set PAGER OFF

set waits 'SELECT pg_stat_activity.procpid, pg_stat_activity.current_query, pg_stat_activity.waiting, now() - pg_stat_activity.query_start as "totaltime", pg_stat_activity.backend_start FROM pg_stat_activity WHERE pg_stat_activity.current_query !~ '%IDLE%'::text AND pg_stat_activity.waiting = true;;'

set locks 'select pid,mode,current_query from pg_locks,pg_stat_activity where granted=false and locktype='transactionid' and pid=procpid order by pid,granted;;'

:wq!

Utilizzo:

postgres=# :waits
procpid | current_query | waiting | totaltime | backend_start
---------+-------------------------------+---------+-----------------+----------------------------------
9223 | insert into locks VALUES (1); | t | 00:00:18.901773 | 2011-10-08 00:29:10.065186+05:30
(1 row)

postgres=# :locks
pid | mode | current_query
------+-----------+-------------------------------
9223 | ShareLock | insert into locks VALUES (1);
(1 row)

Non è stato utile? Divertiti… :). Tornerò con altre cose.