用 pgAdmin 监控 PostgreSQL 性能
一 快速上手 Dashboard 与 Server Status
- 在 pgAdmin 左侧树中注册并连接目标服务器,进入目标数据库的 Dashboard 页签,可实时查看:
- Server sessions(会话/连接数)
- Transactions per second(每秒事务数)
- Tuples in / Tuples out(读写元组量)
- Block I/O(块读写)
- Server activity(会话明细、锁等待等)
- 打开 Server Status 面板,补充查看数据库运行状态与活动会话,用于快速定位异常连接与阻塞。以上面板适合做“当下发生了什么”的实时观测与初步排障。
二 深入诊断的 SQL 与内置视图
- 在 pgAdmin 的 Query Tool 中执行以下典型查询,定位慢查询、长事务与锁等待:
- 活跃长查询与阻塞
- 查看当前活动与等待事件:
- SELECT pid, usename, application_name, state, query, wait_event_type, wait_event, now() - query_start AS duration FROM pg_stat_activity WHERE state <> ‘idle’ ORDER BY duration DESC;
- 终止问题会话(谨慎使用):
- SELECT pg_terminate_backend(pid);
- 表级访问与 I/O(识别全表扫描、索引利用情况)
- SELECT schemaname, tablename, seq_scan, seq_tup_read, idx_scan, idx_tup_fetch, n_tup_ins, n_tup_upd, n_tup_del FROM pg_stat_all_tables ORDER BY seq_scan DESC LIMIT 20;
- 数据库级吞吐与 I/O(评估负载与缓存命中)
- SELECT datname, xact_commit, xact_rollback, blks_read, blks_hit, (blks_hit::float/(blks_hit+blks_read)) AS hit_ratio FROM pg_stat_database ORDER BY hit_ratio;
- 复制与延迟(主从/备库环境)
- SELECT client_addr, state, sync_state, write_lag, flush_lag, replay_lag FROM pg_stat_replication;
- 这些视图(如 pg_stat_activity、pg_stat_all_tables、pg_stat_database、pg_stat_replication)是 PostgreSQL 的标准性能视图,pgAdmin 通过查询工具即可便捷执行与可视化结果。
三 慢查询与日志分析
- 在数据库服务器上开启与慢查询相关的日志参数(编辑 postgresql.conf 并重启或重载):
- logging_collector = on
- log_directory = ‘pg_log’
- log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’
- log_statement = ‘mod’
- log_min_duration_statement = 1000 – 单位毫秒,记录超过 1 秒的语句
- 使用 pgBadger 解析日志并生成 HTML 报告,快速得到慢查询排行、错误统计、连接趋势等:
- pgbadger /var/log/postgresql/*.log -o /var/www/html/pg_report.html
- 在 pgAdmin 中可将报表页面加入书签或内嵌查看,结合 Dashboard 做“实时 + 历史”的对照分析。
四 扩展监控与自定义仪表板
- 在 pgAdmin 的浏览器面板进入目标数据库的 Extensions,可查看/安装扩展,并通过扩展对话框管理(General/Definition/SQL 页签)。
- 利用系统视图 pg_stat_extensions 监控扩展状态与版本,例如:
- SELECT extname, extversion, schema, last_updated FROM pg_stat_extensions ORDER BY last_updated DESC;
- 在 Query Tool 中将上述查询保存为仪表板组件:执行查询 → 工具栏 Save as Dashboard → 命名与分组。这样能把“扩展状态、复制延迟、Top SQL”等组合到一个视图,形成面向团队的常驻监控面板。
五 与操作系统和 Prometheus 的联动
- 操作系统层配合观测(在数据库主机执行):
- top / htop(CPU、内存)
- vmstat(虚拟内存与 CPU 上下文)
- iostat -x(磁盘 I/O 利用率与延迟)
- free(内存使用)
- ss / netstat(连接与端口)
- 长期趋势与告警建议接入 Prometheus + Grafana:
- 使用 postgres_exporter 暴露指标,Prometheus 抓取,Grafana 展示(可导入 PostgreSQL 常用仪表板模板,如 ID:9628)。
- 在 pgAdmin 中保留“即时诊断”,在 Prometheus/Grafana 中做“历史趋势、阈值告警与容量规划”,两者互补。