PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Fichier ~/.psqlrc pour les DBA

Dans notre surveillance régulière des DBA, nous utiliserons autant de combinaisons de requêtes pg_catalog pour récupérer des informations telles que dans transaction , les requêtes en attente, le nombre de connexions, etc. La plupart des DBA créent des vues pour raccourcir les grandes requêtes combinées et garder à portée de main pour une utilisation ultérieure selon les besoins.

PostgreSQL, fournit un fichier de démarrage (.psqlrc) qui s'exécute avant de se connecter à la base de données lors de l'utilisation avec l'utilitaire psql. En utilisant le fichier .psqlrc, vous pouvez placer toutes vos requêtes importantes avec un alias de mot par la commande 'set' et l'exécuter dans le terminal psql au lieu de taper de grandes requêtes. Si vous ne voyez pas le fichier .psqlrc dans le répertoire personnel de l'utilisateur "postgres", vous pouvez le créer explicitement. Je l'ai essayé et je l'ai trouvé très utile.

Points sur .psqlrc :
  • .psqlrc est un fichier de démarrage, s'exécute lors de la connexion au cluster.
  • Le fichier .psqlrc résidera dans le répertoire d'accueil de l'utilisateur "postgres".
  • les options psql -X ou -c, ne lisent pas le fichier .psqlrc.
  • Le fichier .psqlrc est destiné au niveau de la session complète et non au niveau de la base de données.

Capture d'écran de mon terminal :

Voyons comment implémenter cela.

Syntaxe :

set <alias-variable-name>  'query'
Remarque :si votre requête comporte des guillemets simples ou doubles, utilisez " ou " dans la requête. Exemples de requêtes à placer dans le fichier .psqlrc avec l'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!

Utilisation :

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'était-ce pas utile. Profitez… :). Sera de retour avec d'autres trucs.