SELECTpid, state, backend_start, substr(query, 0, 100) q FROMpg_stat_activity WHEREbackend_type ='client backend'ANDqueryLIKE'ALTER TABLE%' ORDERBYbackend_start; 找到alter table会话对应的pid,再通过函数pg_blocking_pids(
client_port | 34596 backend_start | 2022-09-21 17:47:09.629914+08 backend_xmin | state | streaming sent_location | 1/F4000060 write_location | 1/F4000060 flush_location | 1/F4000060 replay_location | 1/F4000060 sync_priority | 0 sync_state |sync---+--- pid | 116097 usesysid | ...
server处理流程:ServerLoop->BackendStartup->BackendInitialize->ProcessStartupPacket(处理加密)认证协商 当加密协商阶段完成或跳过后,libpq 协议将开始进行认证阶段。认证阶段由 Startup message 消息开始,消息格式以消息长度开始,随后紧跟协议版本号,然后是键值对形式的连接信息,如用户名、数据库以及其他 GUC 参数...
我们只分析作为client的backend process的情况。 // 是否向client发送ready for query消息, 默认true,表示startup阶段结束会发送。其它阶段比如每次simple query结束也会发送。 // 详见"startup消息类型" // case 'Z': /* backend is ready for new query */ volatile bool send_ready_for_query = true; //...
query_start "query_start(当前查询开始时间)" ,to_char(a.state_change,'yyyy-mm-dd hh24:mi:ss') "state_change(状态变化时间)" --,a.state "state(状态)" --,a.query "sql(执行的sql)" --,a.backend_type "backend_type(后端类型)" from pg_stat_activity a inner join pg_roles b on (...
walsender类似于常规后端,连接和walsender process是一对一的关系,但它主要流程是处理一组特殊的复制模式命令,而不是处理SQL查询(代码在src/backend/postmaster/postmaster.c/ProcessStartupPacket(Port*, bool)函数:当strcmp(valptr, "database")==0时,设置am_walsender为true,在src/backend/tcop/postgres.c...
postgres=# select * from pg_stat_activity; -[ RECORD 1 ]---+--- datid | 13241 datname | postgres pid | 20644 usesysid | 10 usename | postgres application_name | psql client_addr | client_hostname | client_port | -1 backend_start | 2018-03-25 05:38:16.988057+08 xact_start |...
backend process也称为postgres进程,是由上面的postgres server process启动的用于服务于对应的客户端,通过TCP协议和客户端进行通信。 由于这个进程只能服务于一个特定的database,所以需要在连接PG数据库的时候指定一个默认连接的database。 PG允许多个客户端同时连接数据库,由max_connections参数控制最大并发连接数,默认是...
四个时间戳列显示当某些事情开始:backend_start实际上是建立连接时,xact_start是当前事务开始时(null如果客户没有打开的事务),query_start是当前或最近的查询开始时,和state_change最后连接的状态改变的时候。 pg_stat_activity的最后一部分包含连接的实际状态。如果查询正在等待另一个释放锁,那么wait_event_type包含关...
backend_start timestamp 客户端连接创建时间。 xact_start timestamp 事务开始时间。 query_start timestamp 当前SQL开始执行时间。 state_change timestamp 当前状态变更时间。 wait_event_type text 等待事件类型,后端正在等待的事件类型,如果不存在则为 NULL。可能的值有: LWLock:后端正在等待轻量级锁。每一个这样...