sql >> Database >  >> RDS >> PostgreSQL

~/.psqlrc bestand voor DBA's

In onze reguliere DBA-monitoring zullen we zoveel combinaties van pg_catalog-query's gebruiken om informatie zoals in transactie, wachtende queries, aantal verbindingen, enz. op te halen. De meeste DBA's creëren views om grote combinatiequery's te verkorten en per vereiste bij de hand houden voor later gebruik.

PostgreSQL biedt een opstartbestand (.psqlrc) dat wordt uitgevoerd voordat verbinding wordt gemaakt met de database bij gebruik met het psql-hulpprogramma. Met behulp van het .psqlrc-bestand kunt u al uw belangrijke zoekopdrachten onder een alias van één woord plaatsen met de opdracht 'set' en deze uitvoeren in de psql-terminal in plaats van grote zoekopdrachten te typen. Als u het .psqlrc-bestand niet ziet in de homedirectory van de 'postgres'-gebruiker, kunt u het expliciet maken. Ik heb het geprobeerd en vond het erg nuttig.

Punten op .psqlrc:
  • .psqlrc is een opstartbestand dat wordt uitgevoerd wanneer verbinding wordt gemaakt met het cluster.
  • .psqlrc-bestand zal zich in de thuismap van de 'postgres'-gebruiker bevinden.
  • psql-opties -X of -c, lees het .psqlrc-bestand niet.
  • .psqlrc-bestand is voor volledig sessieniveau, niet voor databaseniveau.

Mijn terminal Screenshot:

Laten we eens kijken hoe we dit kunnen implementeren.

Syntaxis:

set <alias-variable-name>  'query'
Opmerking:als uw zoekopdracht enkele of dubbele aanhalingstekens heeft, gebruik dan ' of ” in de zoekopdracht. Voorbeeldquery's om in .psqlrc-bestand met alias te plaatsen:
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!

Gebruik:

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)

Was het niet nuttig. Genieten van… :). Zal terugkomen met wat meer dingen.


  1. Hoe kan (of kan ik) DISTINCT SELECTEREN op meerdere kolommen?

  2. Hoe CONVERT_TZ() werkt in MariaDB

  3. Een database-e-mailaccount bijwerken in SQL Server (T-SQL)

  4. Moet de waarde van de reeks in Oracle opnieuw instellen