sql >> Base de Datos >  >> RDS >> PostgreSQL

~/.psqlrc archivo para DBA

En nuestro monitoreo regular de DBA, usaremos muchas combinaciones de consultas de pg_catalog para recuperar información como en transacción, consultas en espera, número de conexiones, etc. La mayoría de los DBA crean vistas para acortar consultas de combinación grande y manténgalo a mano para su uso posterior según el requisito.

PostgreSQL proporciona un archivo de inicio (.psqlrc) que se ejecuta antes de conectarse a la base de datos cuando se usa con la utilidad psql. Con el archivo .psqlrc, puede colocar todas sus consultas importantes con un alias de una palabra mediante el comando 'establecer' y ejecutarlo en la terminal psql en lugar de escribir consultas grandes. Si no ve el archivo .psqlrc en el directorio de inicio del usuario 'postgres', puede crearlo explícitamente. Lo probé y me resultó muy útil.

Puntos en .psqlrc:
  • .psqlrc es un archivo de inicio, se ejecuta cuando se conecta al clúster.
  • El archivo .psqlrc residirá en el directorio de inicio del usuario 'postgres'.
  • opciones psql -X o -c, no lea el archivo .psqlrc.
  • El archivo .psqlrc es para el nivel de sesión completo, no para el nivel de la base de datos.

Captura de pantalla de mi terminal:

Veamos cómo implementar esto.

Sintaxis:

set <alias-variable-name>  'query'
Nota:si su consulta tiene comillas simples o dobles, utilice ' o ” en la consulta. Consultas de muestra para colocar en el archivo .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!

Uso:

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)

¿No fue útil? Disfrutar… :). Volveré con más cosas.