PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

~/.psqlrc-Datei für DBAs

In unserer regulären DBA-Überwachung werden wir so viele Kombinationen von pg_catalog-Abfragen verwenden, um Informationen wie in Transaktionen, wartende Abfragen, Anzahl der Verbindungen usw. zu erhalten. Die meisten DBAs erstellen Ansichten, um große Kombinationsabfragen abzukürzen und je nach Anforderung für die spätere Verwendung griffbereit halten.

PostgreSQL stellt eine Startdatei (.psqlrc) bereit, die ausgeführt wird, bevor eine Verbindung zur Datenbank hergestellt wird, wenn das Dienstprogramm psql verwendet wird. Mit der .psqlrc-Datei können Sie alle Ihre wichtigen Abfragen mit einem Wort-Alias ​​mit dem Befehl „set“ platzieren und im psql-Terminal ausführen, anstatt große Abfragen einzugeben. Wenn Sie die .psqlrc-Datei nicht im Home-Verzeichnis des Benutzers „postgres“ sehen, können Sie sie explizit erstellen. Ich habe es ausprobiert und fand es sehr hilfreich.

Punkte auf .psqlrc:
  • .psqlrc ist eine Startdatei, die beim Verbinden mit dem Cluster ausgeführt wird.
  • .psqlrc-Datei befindet sich im Benutzer-Home-Verzeichnis „postgres“.
  • psql-Optionen -X oder -c, die .psqlrc-Datei nicht lesen.
  • .psqlrc-Datei ist für die vollständige Sitzungsebene, nicht für die Datenbankebene.

Mein Terminal-Screenshot:

Mal sehen, wie man das implementiert.

Syntax:

set <alias-variable-name>  'query'
Hinweis:Wenn Ihre Abfrage einfache oder doppelte Anführungszeichen enthält, verwenden Sie in der Abfrage „oder “. Beispielabfragen zum Einfügen in eine .psqlrc-Datei mit 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!

Verwendung:

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)

War es nicht hilfreich. Genießen… :). Wir werden mit weiteren Sachen zurück sein.