sql >> Databáze >  >> RDS >> PostgreSQL

~/.psqlrc soubor pro DBA

V našem pravidelném monitorování DBA budeme používat tolik kombinací dotazů pg_catalog k získávání informací, jako je v transakci, čekající dotazy, počet připojení atd. Většina DBA vytváří pohledy, aby zkrátila velké kombinované dotazy a mějte po ruce pro pozdější použití podle potřeby.

PostgreSQL poskytuje spouštěcí soubor (.psqlrc), který se spustí před připojením k databázi při použití s ​​nástrojem psql. Pomocí souboru .psqlrc můžete umístit všechny důležité dotazy s jedním slovním aliasem příkazem „set“ a provést jej v terminálu psql místo psaní velkých dotazů. Pokud soubor .psqlrc nevidíte v domovském adresáři uživatele ‚postgres‘, můžete jej vytvořit explicitně. Vyzkoušel jsem to a zjistil jsem, že je to velmi užitečné.

Body na .psqlrc:
  • .psqlrc je spouštěcí soubor, který se spustí při připojení ke clusteru.
  • Soubor .psqlrc bude umístěn v domovském adresáři uživatele „postgres“.
  • Možnosti psql -X nebo -c, nečíst soubor .psqlrc.
  • Soubor .psqlrc je určen pro úplnou úroveň relace, nikoli pro úroveň databáze.

Snímek obrazovky mého terminálu:

Podívejme se, jak to implementovat.

Syntaxe:

set <alias-variable-name>  'query'
Poznámka:Pokud váš dotaz obsahuje jednoduché nebo dvojité uvozovky, použijte v dotazu „ nebo “. Ukázkové dotazy k vložení do souboru .psqlrc s aliasem:
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!

Použití:

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)

Nebylo to užitečné. Užívat si… :). Vrátí se s dalšími věcmi.


  1. Převést „smalldatetime“ na „čas“ v SQL Server (příklady T-SQL)

  2. Jak funguje SQLite Rtrim()

  3. Index založený na SQLite Expression

  4. Jak efektivně modelujete dědičnost v databázi?