IDLE 状态在一行 pg_stat_activity 中表示什么?

tuk*_*tuk 28 postgresql

有人可以解决我对pg_stat_activitypostgres 9.5 的以下疑问吗?

  1. 有人可以让我知道state IDLE行中的表示是pg_stat_activity什么吗?它是否像检查所有打开的 postgres 连接,如果连接没有执行任何查询,则IDLE表示该连接执行的最后一个查询?
  2. 在输出select * from pg_stat_activity我看到有行state IDLEquery_start_date超过2天?这意味着什么?我应该担心这个吗?
  3. 有人可以让我知道 pg_stat_activity 是如何填充的吗?如果我正在执行一个查询,比如Select * from pg_stat_activity它是从 postgres 维护的某个快照中生成详细信息,还是检查 postgres 中打开的当前连接以提供详细信息?

tuk*_*tuk 25

这已在 postgres邮件列表中得到解答

pg_stat_activity 中的每一行表示从客户端到服务器的已建立连接。“空闲”意味着客户端当前没有执行查询,也没有在事务中。

如果 query_start_date 是 2 天前,那仅意味着要在该连接上执行的最后一个查询是两天前。

不必担心,除非您打开了太多连接,以至于它消耗的 RAM 超出了您的承受能力。通常希望连接池有一些空闲连接,这样查询就不会受到建立新连接的延迟。