如何查询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时代表会话正在执行SQLstate_change记录的是会话上一次状态变更的时间,用它计算活跃执行的时长更准确,避免把长时间空闲的会话误统计进去
内容的提问来源于stack exchange,提问作者Bruno Caue Chaves
相关产品推荐
相关产品推荐

