上一篇: 【0234】PgBackendStatus 记录当前postgres进程的活动状态
1. pg_stat_activity中xxx实时信息如何实现?
客户端(eg:psql)在连接上postmaster之后,postmaster守护进程会fork()一个后端进场(backend process),之后此客户端的所有操作、交互均有此对应的BackendId进程接收、响应。客户端的每一个SQL操作语句,在pg_stat_activity()函数中都可以看到其完整的消息,比如:语句操作时间、当前操作的SQL语句、当前backend process的运行状态等等。
此函数中显示的字段(表示具体的SQL语句)是如何实现的? 比如当前客户端执行一条SQL查询语句,如下:
在epoll()中读取到此请求消息后,经过层层操作,最终会来到exec_simple_query()
函数,而该函数的函数体中会先调用pgstat_report_activiy()
函数完成此请求字符串的缓冲区写入。
<