Skip to main content

PostgreSQL 查看当前活动

查询出耗时较长 且

查看耗时较长的查询

# 6.0版本:
select current_timestamp - query_start as runtime, datname, usename, query
from pg_stat_activity
where state != 'idle'
order by 1 desc;

# 4.3版本:
select current_timestamp - query_start as runtime, datname, usename, current_query
from pg_stat_activity
where current_query != '<IDLE>'
order by 1 desc;

结束掉某个查询

# 通过Cancel取消一个正在运行的Query (需要在一个运行Query的Session中执行)
# 如果Session本身就是Idle的,执行不起作用。另外取消这个Query需要花费一定的时间来做清理和事务的回滚
SELECT pg_cancel_backend(pid)

# 使用pg_terminate_backend来清理Idle Session,也可以用来终止Query
SELECT pg_terminate_backend(pid);

Ref: