当用户运行繁重的查询时,我正在研究数据库中的繁重负载。我到了 pg_stat_statements,它向我显示了用户的 ID、查询以及运行所需的时间。另一方面,我发现 pg_stat_activity 向我显示了数据库的活动用户及其 pid、query_start 等。我加入了 2,因为它们在用户 ID 上有相似之处。
SELECT a.usesysid,a.pid, a.client_addr, a.query_start, st.query, st.total_time
FROM pg_stat_activity as a
JOIN pg_stat_statements as st
ON a.usesysid = st.userid
通过这种方式,我得到了活动用户以及他使用查询的位置,比如它的负载等。但问题是,当它是同一个用户连接到不同的 pid 时,找到的查询被复制到每个连接的用户 pid片刻。
在 pg_stat_activity 中,它显示用户的数据处于活动状态,因此,如果他断开连接,他的数据就会丢失(我用 ETL 解决了它)。但是处于活动状态,它如何防止它们被复制并获取用户使用的各自查询?
欢迎任何建议或文件。