=====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, то это означает, что запрос выполняется, но его работе препятствует какая-то блокировка в системе.