监控

会话监控

SELECT 
    pid
    ,datname
    ,usename
    ,application_name
    ,client_hostname
    ,state
    ,client_port
    ,backend_start
    ,query_start
    ,query  
FROM pg_stat_activity

// 监控 Postgres 会话 (SQL)

一些重要的参数需要了解

Pid - 后端进程 ID

Datname - 数据库名称

Username - 运行查询的用户

Application_name - 客户端应用程序名称

State - 会话状态 (例如:active、waiting、idle ...)

Query - 执行的查询


取消正在运行的查询

SELECT pg_cancel_backend(pid);

// 取消使用提供的 pid 的正在运行的查询。这在杀死长时间运行的查询时很有用 (SQL)


根据大小查看最大的 Postgres 表/索引

SELECT
  nspname || '.' || relname AS "Object Name", relkind As "Object Type",
  pg_size_pretty(pg_relation_size(C.oid)) AS "size"
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_relation_size(C.oid) DESC
LIMIT 20;

// 查看前 20 个最大的表/索引 (不包括目录表) (SQL)