当前位置: 首页 > news >正文

PostgreSQL 可视化监控利器 —— pg_top 安装与使用全攻略(查看正在执行的SQL占用的资源)

在日常数据库运维和性能调优中,想要实时查看 PostgreSQL 的运行状态?

比如:

  • 哪个 SQL 在吃 CPU?

  • 有没有会话锁住了表?

  • 当前连接数爆了吗?

别急!一款命令行神器能让你秒变“数据库侦探” —— pg_top


🧩 一、pg_top 是什么?

pg_top 是一款类似 Linux top 的 PostgreSQL 性能监控工具。

它能实时展示数据库的:

  • 当前活跃连接

  • 执行中的 SQL

  • CPU / 内存占用

  • 锁(Lock)状态

  • 进程运行时间

一句话总结:

👉 pg_top = PostgreSQL 的动态监控面板。


⚙️ 二、安装 pg_top

📦 Fedora / CentOS / RHEL 安装

一条命令搞定:

sudo dnf install pg_top

安装完成后验证:

pg_top --version

👤 使用 PostgreSQL 用户运行

su postgres
pg_top

连接指定数据库:

pg_top -U postgres -d my_database

连接远程数据库:

pg_top -h 192.168.1.10 -p 5432 -U postgres -d my_database

调整刷新间隔(默认 5 秒):

pg_top -s 2


🔍 三、pg_top 常用快捷键

进入界面后,通过快捷键动态切换视图:

快捷键

功能说明

r

按 CPU 使用率排序

m

按内存使用率排序

t

按运行时间排序

f

切换显示列

c

显示 SQL 命令文本

L

查看锁信息(Locks View)

q

退出

?

查看帮助菜单

💡 实用小技巧:

  • 按 c 查看实时 SQL

  • 按 L 检查锁竞争

  • 按 r 找出“吃 CPU 的元凶”


🧠 四、实战演示

🧩 示例 1:查看活跃查询

pg_top -d mydb -U postgres

进入后按下 c 键,你会看到类似下方界面:

 PID  USER       PRI  NI  SIZE  RSS  SHARE  STAT  CPU%  MEM%   TIME  COMMAND1423 postgres   20   0   251M  29M   0.1   idle   0.0   1.2  0:00.42  SELECT * FROM orders WHERE price > 1000;1456 postgres   20   0   302M  40M   0.2   run    98.4  2.3  0:13.05  UPDATE users SET active = true WHERE last_login > now() - interval '30 days';

🔎 一眼就能看出:哪个查询占 CPU、哪个在跑、哪个在等。


🔒 示例 2:查看锁等待情况

进入 pg_top 后按 L(大写 L):

Database: mydb  Locks ViewPID   Lock Type      Mode           Relation       Transaction ID   Granted1432  relation       RowExclusive   public.users   123456789        t1459  transaction    ExclusiveLock  <none>         123456790        f
可以清楚地看到哪些锁已持有、哪些在等待。


⚡ 示例 3:按 CPU 或内存排序

进入界面后,按下对应键:

  • r:按 CPU 排序(定位最重 SQL)

  • m:按内存排序

  • t:按运行时间排序

示例界面👇

pg_top - 14:52:11  up 12 days,  2:45,  load average: 0.42, 0.35, 0.32
PID   USER      CPU%  MEM%  TIME+   COMMAND
1456  postgres  95.6  2.1   0:12.34  UPDATE users SET active = true ...
1622  postgres  15.2  1.7   0:01.43  SELECT * FROM orders WHERE price > 1000


🧮 五、pg_top vs 其他工具

工具

特点

适用场景

pg_top

实时刷新、交互式命令行

性能诊断、现场排查

pg_stat_activity

SQL 查询方式

日常监控、数据采集

pgAdmin / pgbadger

图形界面、报表统计

可视化分析

✅ 建议组合使用:

pg_top + pg_stat_statements = 实时 + 历史 性能分析。


🧰 六、常见问题 (FAQ)

Q1:运行时提示 “permission denied”?

🔹 检查 PostgreSQL 用户权限,确保能访问系统视图。

Q2:SQL 文本不显示?

🔹 在 postgresql.conf 中增加:

track_activity_query_size = 2048

然后重启数据库。

Q3:支持哪些版本?

🔹 支持 PostgreSQL 9.x - 17.x,大多数发行版仓库自带。


🏁 七、总结

pg_top 是 PostgreSQL 运维和性能调优中最轻巧实用的工具之一。

它能让你快速:

  • 找出慢查询

  • 定位锁竞争

  • 监控数据库资源占用

💡 一句话总结:

想知道 PostgreSQL “现在在忙啥”?运行 pg_top 就够了!


📚 延伸阅读

  • PostgreSQL 官方文档:Monitoring Database Activity

  • pg_stat_activity 详解

  • pgbadger:PostgreSQL 日志分析神器

http://www.dtcms.com/a/601756.html

相关文章:

  • C语言 | 文件操作详解与实战示例
  • Spring ThreadPoolTaskExecutor 与 CompletableFuture.supplyAsync 常用实践
  • 网站太卡怎么优化wordpress meta key
  • 现在入局自助KTV,算晚吗?
  • 用Microsoft Visual Studio Installer Projects 2022打包程序,同时安装VC++的运行库等
  • 南宁网站制作建设建设网站需要哪些语言
  • C语言在线编译工具 | 提升编程效率与学习体验
  • ARM《10》_03_字符设备驱动进阶(并发→竞态→同步机制、阻塞io和非阻塞io)
  • 【DaisyUI]】dropdown在点击菜单项之后不关闭,怎么破?
  • 常德公司做网站手机网站怎么做的好
  • 网站建设的可行性报告范文城市宣传片制作公司
  • Go语言编译型:高效的编程语言选择|深入探讨Go语言的编译特性与优势
  • 邓州网站制作企业网站设计思路
  • 区县政府税务数据分析能力建设DID(2007-2025)
  • Python图像处理基础(十九)
  • 全国产5G+WiFi6工业路由,适配工业4.0多元场景需求
  • LitJSON 轻量级、高效易用的 .NET JSON 库 深度解析与实战指南
  • 什么是虚拟现实(VR)?
  • 织梦手机电影网站模板创意平面设计公司
  • Hadess入门到精通 - 如何管理Maven制品
  • 一文分清:零样本、小样本、微调,使用 LLM 的三种方式
  • 网站建设用什么科目黔东南购物网站开发设计
  • 数字化转型绕不开的“地基”:IT基础架构运维如何破局?
  • Go 语言编译优化与性能提升
  • Ansible安装与常用模块
  • Linux新
  • 建站平台哪个好承德做网站的公司
  • wordpress 用户投稿吉林百度seo
  • 通过网络调试,上位机电脑控制下位机单片机板载灯的亮灭
  • 学习笔记八:对数几率回归