Re: pg_stat_activity doubts

From: Ray Stell <stellr(at)vt(dot)edu>
To: pgsql-admin(at)lists(dot)postgresql(dot)org
Subject: Re: pg_stat_activity doubts
Date: 2018-03-22 13:43:18
Message-ID: 12be0586-aad1-4b4d-57f6-05514c52627e@vt.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

On 3/22/18 8:45 AM, Debraj Manna wrote:

> Hi
>
> Can someone resolve my below doubts about pg_stat_activity :-
>
> 1. Can someone let me know how pg_stat_activity is populated? If I am
> executing a query like `Select * from pg_stat_activity` does it
> produce the details from some snapshot maintained by postgres or
> it checks the current connections open in postgres to provide the
> details?
> 2. Can some let me know what does the state IDLE denotes in the row
> of pg_stat_activity? Is it like it checks all the open connections
> to postgres and if the connection is not executing any query then
> IDLE denotes the last query executed by the connection?
> 3. In the output of select * from pg_stat_activity I am seeing rows
> with state IDLE and the query_start_date more than 2 days old?
> What does this signify ? Should I be worried about this?
> 4.
>

You can use psql -E to trace the source :

template1=# \d pg_stat_activity

********* QUERY **********
SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(pg_stat_activity)$'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
**************************

********* QUERY **********
SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules,
c.relhastriggers, c.relhasoids, '', c.reltablespace, CASE WHEN
c.reloftype = 0 THEN '' ELSE
c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence,
c.relreplident
FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
WHERE c.oid = '11283';
**************************

********* QUERY **********
SELECT a.attname,
  pg_catalog.format_type(a.atttypid, a.atttypmod),
  (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
   FROM pg_catalog.pg_attrdef d
   WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),
  a.attnotnull, a.attnum,
  (SELECT c.collname FROM pg_catalog.pg_collation c, pg_catalog.pg_type t
   WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND
a.attcollation <> t.typcollation) AS attcollation,
  NULL AS indexdef,
  NULL AS attfdwoptions
FROM pg_catalog.pg_attribute a
WHERE a.attrelid = '11283' AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum;
**************************

           View "pg_catalog.pg_stat_activity"
      Column      |           Type           | Modifiers
------------------+--------------------------+-----------
 datid            | oid                      |
 datname          | name                     |
 pid              | integer                  |
 usesysid         | oid                      |
 usename          | name                     |
 application_name | text                     |
 client_addr      | inet                     |
 client_hostname  | text                     |
 client_port      | integer                  |
 backend_start    | timestamp with time zone |
 xact_start       | timestamp with time zone |
 query_start      | timestamp with time zone |
 state_change     | timestamp with time zone |
 waiting          | boolean                  |
 state            | text                     |
 backend_xid      | xid                      |
 backend_xmin     | xid                      |
 query            | text                     |

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Debraj Manna 2018-03-22 14:01:32 Re: pg_stat_activity doubts
Previous Message Bear Giles 2018-03-22 13:19:55 Re: postgres encryption