sql >> Databasteknik >  >> RDS >> PostgreSQL

~/.psqlrc-fil för DBA:er

I vår vanliga DBA-övervakning kommer vi att använda så många kombinationer av pg_catalog-frågor för att hämta information som i transaktion , väntande frågor, antal anslutningar, etc. De flesta av DBA:erna skapar vyer för att korta stora kombinationsfrågor och ha till hands för senare användning enligt krav.

PostgreSQL, tillhandahåller en startfil (.psqlrc) som körs innan du ansluter till databasen när du använder psql-verktyget. Med hjälp av .psqlrc-filen kan du placera alla dina viktiga frågor med ett ordalias genom "set"-kommandot och köra det i psql-terminalen istället för att skriva stora frågor. Om du inte ser .psqlrc-filen i "postgres" användarhemkatalog kan du skapa den explicit. Jag provade det och tyckte att det var mycket användbart.

Poäng på .psqlrc:
  • .psqlrc är en startfil som körs vid anslutning till klustret.
  • .psqlrc-filen kommer att finnas i 'postgres' användarhemkatalog.
  • psql-alternativ -X eller -c, läs inte .psqlrc-filen.
  • .psqlrc-filen är för fullständig sessionsnivå, inte databasnivå.

Skärmdump av min terminal:

Låt oss se hur man implementerar detta.

Syntax:

set <alias-variable-name>  'query'
Obs! Om din fråga har enkla eller dubbla citattecken, använd " eller " i frågan. Exempelfrågor att lägga i .psqlrc-filen med 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!

Användning:

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)

Var det inte till hjälp. Njut av… :). Återkommer med lite mer grejer.


  1. Oracle:Java lagrad procedur som skickar JMS-meddelande

  2. Förbereda en MySQL- eller MariaDB-server för produktion - del två

  3. MySQL:Hur går jag med i samma bord flera gånger?

  4. Uppgradering till den senaste Jira med den senaste versionen av MariaDB Server