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.