PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

~/.psqlrc arquivo para DBAs

Em nosso monitoramento regular de DBA, usaremos tantas combinações de consultas pg_catalog para obter informações como na transação, consultas em espera, número de conexões, etc. A maioria dos DBAs cria visualizações para reduzir grandes consultas de combinação e mantenha à mão para uso posterior de acordo com a necessidade.

PostgreSQL, fornece um arquivo de inicialização (.psqlrc) que é executado antes de se conectar ao banco de dados ao usar o utilitário psql. Usando o arquivo .psqlrc você pode colocar todas as suas consultas importantes com um alias de palavra pelo comando 'set' e executá-lo no terminal psql em vez de digitar grandes consultas. Se você não verá o arquivo .psqlrc no diretório inicial do usuário ‘postgres’, você pode criá-lo explicitamente. Eu tentei e achei muito útil.
Pontos em .psqlrc:
  • .psqlrc é um arquivo de inicialização, executado ao conectar-se ao cluster.
  • O arquivo .psqlrc residirá no diretório inicial do usuário 'postgres'.
  • opções do psql -X ou -c, não leia o arquivo .psqlrc.
  • O arquivo .psqlrc é para o nível de sessão completo, não para o nível de banco de dados.

Captura de tela do meu terminal:

Vamos ver como implementar isso.

Sintaxe:
set <alias-variable-name>  'query'
Observação:se sua consulta tiver aspas simples ou duplas, use ' ou ” na consulta. Exemplo de consultas para colocar no arquivo .psqlrc com 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)


Não foi útil. Aproveitar… :). Volto com mais coisas.