You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询PostgreSQL中活跃时长超过3小时的会话

PostgreSQL查询活跃时长超过3小时会话的调整方案

你可以在原有查询基础上增加WHERE条件,通过计算时间差值过滤符合要求的会话即可。

如果你需要的是处于活跃执行状态超过3小时的会话,使用如下调整后的语句:

select pid as process_id, 
       usename as username, 
       datname as database_name,
       client_addr as client_address,
       application_name,
       backend_start,
       state,
       state_change,
       now() - state_change as active_duration
from pg_stat_activity
where state = 'active'
  and now() - state_change > interval '3 hours';

如果需要统计从启动到当前总时长超过3小时的所有会话(含空闲状态),把WHERE条件替换为:

where now() - backend_start > interval '3 hours'

补充说明:

  • pg_stat_activity的state字段值为active时代表会话正在执行SQL
  • state_change记录的是会话上一次状态变更的时间,用它计算活跃执行的时长更准确,避免把长时间空闲的会话误统计进去

内容的提问来源于stack exchange,提问作者Bruno Caue Chaves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:54:04