温馨提示×

linux pgadmin怎么查慢查询

小樊
37
2026-09-30 14:29:37
栏目: 智能运维

在 Linux 上使用 pgAdmin 查 PostgreSQL 慢查询,一般可以从下面几个层面来做(pgAdmin 本身 + PostgreSQL 配置)。


一、先开启 PostgreSQL 慢查询日志(最关键)

pgAdmin 只能“看”,慢查询需要 PostgreSQL 先记录。

1. 修改 postgresql.conf

路径通常在:

/var/lib/postgresql/<版本>/main/postgresql.conf

或

/etc/postgresql/<版本>/main/postgresql.conf

修改以下参数:

logging_collector = on
log_directory = 'log'
log_min_duration_statement = 1000   # 超过 1 秒的 SQL 记日志
log_statement = 'none'
log_line_prefix = '%t %p %u %d %a '

单位:毫秒(1000 = 1 秒)

2. 重启 PostgreSQL

sudo systemctl restart postgresql

二、用 pgAdmin 查看慢查询日志

方式 1:直接看日志文件(推荐)

  1. 登录服务器
  2. 查看日志目录
ls /var/log/postgresql/
  1. 查看慢查询
tail -f /var/log/postgresql/postgresql-*.log

pgAdmin 不能直接分析日志文件,但你可以把日志下载下来看。


三、用 pgAdmin 的「查询工具」查慢 SQL(实时)

1. 打开 pgAdmin

  • 连接数据库
  • 工具 → 查询工具

2. 查询当前正在执行的慢 SQL

SELECT
  pid,
  now() - query_start AS duration,
  state,
  query
FROM pg_stat_activity
WHERE state <> 'idle'
ORDER BY duration DESC;

四、用 pg_stat_statements(最推荐)

1. 启用扩展

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

2. postgresql.conf 添加

shared_preload_libraries = 'pg_stat_statements'

重启数据库。

3. 查最慢的 SQL(pgAdmin 可直接执行)

SELECT
  query,
  calls,
  total_exec_time,
  mean_exec_time,
  max_exec_time
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

五、pgAdmin 自带功能(辅助)

  • Dashboard(仪表盘)
    • 查看连接数、锁、SQL 执行
  • Server Status
    • 看当前活动查询

六、推荐组合方案 ✅

生产环境最佳实践:

  1. log_min_duration_statement 开慢日志
  2. 启用 pg_stat_statements
  3. pgAdmin 查 pg_stat_statements
  4. 必要时看日志文件

如果你愿意,可以告诉我:

  • PostgreSQL 版本
  • 是否在 Docker / 云数据库
  • 想“实时查”还是“事后分析”

我可以给你更精确的配置。

0 踩