=====pg_stat_activity=====
В представлении pg_stat_activity для каждого серверного процесса будет присутствовать по одной строке с информацией, относящейся к текущей деятельности этого процесса.
^Столбец^Тип^Описание|
|''datid''|''oid''|OID базы данных, к которой подключён этот серверный процесс|
|''datname''|''name''|Имя базы данных, к которой подключён этот серверный процесс|
|''pid''|''integer''|Идентификатор процесса этого серверного процесса|
|''usesysid''|''oid''|OID пользователя, подключённого к этому серверному процессу|
|''usename''|''name''|Имя пользователя, подключённого к этому серверному процессу|
|''application_name''|''text''|Название приложения, подключённого к этому серверному процессу|
|''client_addr''|''inet''|IP-адрес клиента, подключённого к этому серверному процессу. Значение null в этом поле означает, что клиент подключён через сокет Unix на стороне сервера или что это внутренний процесс, например, автоочистка.|
|''client_hostname''|''text''|Имя компьютера для подключённого клиента, получаемое в результате обратного поиска в DNS по ''client_addr''. Это поле будет отлично от null только в случае соединений по IP и только при включённом режиме [[runtime-config-logging#guc-log-hostname|log_hostname]].|
|''client_port''|''integer''|Номер TCP-порта, который используется клиентом для соединения с этим серверным процессом, или ''-1'', если используется сокет Unix|
|''backend_start''|''timestamp with time zone''|Время запуска процесса, т. е. время, когда клиент подсоединился к серверу|
|''xact_start''|''timestamp with time zone''|Время начала текущей транзакции в этом процессе или null при отсутствии активной транзакции. Если текущий запрос был первым в своей транзакции, то значение в этом столбце совпадает со значением столбца ''query_start''.|
|''query_start''|''timestamp with time zone''|Время начала выполнения активного в данный момент запроса, или, если ''state'' не ''active'', то время начала выполнения последнего запроса|
|''state_change''|''timestamp with time zone''|Время последнего изменения состояния (поля ''state'')|
|''waiting''|''boolean''|True, если этот серверный процесс ожидает освобождения блокировки|
|''state''|''text''|Общее текущее состояние этого серверного процесса. Возможные значения: ''active'': серверный процесс выполняет запрос. ''idle'': серверный процесс ожидает новой команды от клиента. ''idle in transaction'': серверный процесс находится внутри транзакции, но в настоящее время не выполняет никакой запрос. ''idle in transaction (aborted)'': Это состояние подобно ''idle in transaction'', за исключением того, что один из операторов в транзакции вызывал ошибку. ''fastpath function call'': серверный процесс выполняет fast-path функцию. ''disabled'': Это состояние отображается для серверных процессов, у которых параметр [[runtime-config-statistics#guc-track-activities|track_activities]] отключён. |
|''backend_xid''|''xid''|Идентификатор верхнего уровня транзакции этого серверного процесса или любой другой.|
|''backend_xmin''|''xid''|текущая граница ''xmin'' для серверного процесса.|
|''query''|''text''|Текст последнего запроса этого серверного процесса. Если ''state'' имеет значение ''active'', то в этом поле отображается запрос, который выполняется в настоящий момент. Если процесс находится в любом другом состоянии, то в этом поле отображается последний выполненный запрос.|
SELECT "pid", "usename", "client_addr", "datname", application_name , EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - "query_start")::INTEGER, "state", "query" FROM "pg_stat_activity";
Значения в столбцах waiting и state не зависят друг от друга. Серверный процесс, находящийся в состоянии active может быть waiting, а может и не быть. Если статусы процессов имеют значение true в active, и waiting, то это означает, что запрос выполняется, но его работе препятствует какая-то блокировка в системе.