LightDB之监控数据库pg_stat_activity系统视图

本文详细介绍了PostgreSQL系统视图pg_stat_activity的内容和用途,包括各列的描述及其在数据库监控中的意义。通过实例展示了不同状态如active、idle、idleintransaction等,以及等待事件和事务状态的查询结果,揭示了该视图在数据库性能分析和故障排查中的重要作用。
摘要由CSDN通过智能技术生成

前置环境

lightdb@lt_test=# select version();
                                                  version
-----------------------------------------------------------------------------------------------------------
 LightDB 13.8-22.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)

视图中的内容

通过命令\d+ pg_stat_activity;查看视图详情:

lightdb@lt_test=# \d+ pg_stat_activity;
                                  View "pg_catalog.pg_stat_activity"
      Column      |           Type           | Collation | Nullable | Default | Storage  | Description
------------------+--------------------------+-----------+----------+---------+----------+-------------
 datid            | oid                      |           |          |         | plain    |
 datname          | name                     |           |          |         | plain    |
 pid              | integer                  |           |          |         | plain    |
 leader_pid       | integer                  |           |          |         | plain    |
 usesysid         | oid                      |           |          |         | plain    |
 usename          | name                     |           |          |         | plain    |
 application_name | text                     |           |          |         | extended |
 client_addr      | inet                     |           |          |         | main     |
 client_hostname  | text                     |           |          |         | extended |
 client_port      | integer                  |           |          |         | plain    |
 backend_start    | timestamp with time zone |           |          |         | plain    |
 xact_start       | timestamp with time zone |           |          |         | plain    |
 query_start      | timestamp with time zone |           |          |         | plain    |
 state_change     | timestamp with time zone |           |          |         | plain    |
 wait_event_type  | text                     |           |          |         | extended |
 wait_event       | text                     |           |          |         | extended |
 state            | text                     |           |          |         | extended |
 backend_xid      | xid                      |           |          |         | plain    |
 backend_xmin     | xid                      |           |          |         | plain    |
 query            | text                     |           |          |         | extended |
 backend_type     | text                     |           |          |         | extended |
View definition:
 SELECT s.datid,
    d.datname,
    s.pid,
    s.leader_pid,
    s.usesysid,
    u.rolname AS usename,
    s.application_name,
    s.client_addr,
    s.client_hostname,
    s.client_port,
    s.backend_start,
    s.xact_start,
    s.query_start,
    s.state_change,
    s.wait_event_type,
    s.wait_event,
    s.state,
    s.backend_xid,
    s.backend_xmin,
    s.query,
    s.backend_type
   FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, sslcompression, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, leader_pid)
     LEFT JOIN pg_database d ON s.datid = d.oid
     LEFT JOIN pg_authid u ON s.usesysid = u.oid;

官方文档对每列的描述如下:

类型描述
datidoid此后端连接的数据库的OID
datnamename此后端连接到的数据库的名称
pidinteger后端进程ID
leader_pidinteger如果该进程是并行查询worker,则为并行组长进程ID。如果此进程是并行组长或不参与并行查询,则为NULL。
usesysidoid登录到此后端的用户的OID
usenamename登录到此后端的用户名
application_nametext连接到此后端的应用程序的名称
client_addrinet连接到该后端的客户端IP地址。如果该字段为空,则表示客户端是通过服务器机器上的Unix套接字连接的,或者表示这是一个内部进程,例如autovacuum。
client_hostnametext连接的客户端的主机名,通过反向DNS对客户端(clienten)的解析报告。该字段仅在IP连接时为非空,且仅在启用log_hostname时为空。
client_portinteger客户端用于与此后端通信的TCP端口号,如果使用Unix套接字,则为-1。如果该字段为空,则表示这是一个内部服务器进程。
backend_starttimestamp with time zone此进程启动的时间。对于客户端后端,这是客户端连接到服务的时间
xact_starttimestamp with time zone此流程的当前事务启动的时间,如果没有活动的事务,则为空。如果当前查询是其事务的第一个,则此列等于query_start列。
query_starttimestamp with time zone启动当前活动查询的时间,如果状态不活动,则是最后一次查询的启动时间
state_changetimestamp with time zone最后一次更改状态的时间
wait_event_typetext后端正在等待的事件类型(如果有的话);否则无效
wait_eventtext如果后端当前正在等待,则等待事件名称,否则为NULL。
statetext此后端当前的总体状态。取值包括:
  • active: 后端正在执行查询。
  • idle: 后端正在等待一个新的客户端命令。
  • idle in transaction: 后端位于事务中,但当前没有执行查询
  • idle in transaction (aborted): 此状态类似于事务中的空闲状态,只是事务中的一个语句导致了错误。
  • fastpath function call: 后端正在执行快速路径函数。
  • disabled: 如果在此后端禁用了track_activities,则报告此状态。
backend_xidxid此后端的顶层事务标识符(如果有的话)。
backend_xminxid当前后端的xmin范围
querytext此后端最近查询的文本。如果state为active,这个字段显示当前正在执行的查询。 在所有其他状态下,它显示上一个被执行的查询。默认情况下,查询文本被截断为1024字节;该值可以通过参数track_activity_query_size更改。
backend_typetext当前后端的类型。可能的类型为 autovacuum launcher, autovacuum worker, logical replication launcher, logical replication worker, parallel worker, background writer, client backend, checkpointer, startup, walreceiver, walsender 和 walwriter. 除此以外,由扩展注册的后台worker可能有额外的类型。

测试

select * from pg_stat_activity;

返回结果如下:
在这里插入图片描述

active:表示当前用户正在执行查询等操作。

用另一个客户端再创建一个会话连接,再次select * from pg_stat_activity;结果如下:
在这里插入图片描述

idle:表示当前用户空闲。

测试事务:
在这里插入图片描述

idle in transaction:表示当前用户在事务中。

测试事务中发生错误:

lightdb@lt_test=# begin;
BEGIN
lightdb@lt_test=*# select * from departments;
 department_id | department_name | manager_id | location_id
---------------+-----------------+------------+-------------
(0 rows)

lightdb@lt_test=*# s
lightdb@lt_test-*# ;
ERROR:  syntax error at or near "s"
LINE 1: s
        ^

在这里插入图片描述

idle in transaction (aborted): 表示当前用户在事务中,但是已经发生错误。

测试进程等待:
一个事务会话中修改表结构:

lightdb@lt_test=# begin;
BEGIN
lightdb@lt_test=*# alter table departments add column addr character varying;
ALTER TABLE

再起一个会话查询:

select * from departments;

在这里插入图片描述

wait_event_type:lock
服务器进程正在等待一个重量级锁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值