使用systemctl命令查看PostgreSQL服务运行状态(Debian默认通过systemd管理PostgreSQL服务):
sudo systemctl status postgresql
active (running),则表示服务正在运行;inactive (dead),则表示服务未运行。sudo systemctl start postgresqlsudo systemctl stop postgresqlsudo systemctl restart postgresqlsudo systemctl enable postgresqlsudo systemctl disable postgresql使用pg_isready工具验证PostgreSQL是否接受连接(默认端口5432):
pg_isready -h localhost -p 5432 -U your_username
accepting connections,则表示服务正常;no response,则表示服务未运行或端口不通。PostgreSQL提供多个内置视图,用于实时监控数据库状态:
pg_stat_activity:查看当前所有数据库连接及执行的查询(包括用户、应用名称、查询状态、执行时间等);SELECT datname, usename, application_name, state, query, now() - query_start AS duration
FROM pg_stat_activity;
pg_stat_statements:统计SQL语句的执行次数、总时间、平均时间(需先启用);-- 启用扩展(需在postgresql.conf中配置shared_preload_libraries = 'pg_stat_statements')
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
-- 查询慢SQL(执行时间超过1秒)
SELECT query, calls, total_exec_time, mean_exec_time
FROM pg_stat_statements
WHERE total_exec_time > 1000
ORDER BY total_exec_time DESC;
pg_stat_database:查看数据库级别的统计信息(如事务提交/回滚次数、数据大小、连接数等);SELECT datname, xact_commit, xact_rollback, size, numbackends
FROM pg_stat_database;
pg_stat_replication:监控流复制状态(仅主库有数据,显示备库的同步延迟、应用位置等)。pg_top:类似Unix top命令,实时显示PostgreSQL进程的CPU、内存使用情况及执行的查询;sudo apt install pgtoppg_top -h localhost -p 5432 -U your_username编辑PostgreSQL配置文件(/etc/postgresql/<version>/main/postgresql.conf),调整日志参数:
# 开启日志记录
logging_collector = on
# 记录所有查询(调试用,生产环境建议关闭)
log_statement = 'all'
# 记录慢查询(执行时间超过1秒)
log_min_duration_statement = 1000
# 日志文件路径
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
修改后重启服务生效:sudo systemctl restart postgresql。
pgBadger:开源日志分析工具,生成HTML格式的报告(包含慢查询、错误日志、查询频率等);sudo apt install pgbadgerpgbadger /var/log/postgresql/postgresql-<version>-main.log -o report.htmlreport.html查看可视化报告。postgres_exporter采集PostgreSQL指标(如连接数、查询时间、缓存命中率等);postgres_exporter:wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.11.0/postgres_exporter_0.11.0_linux_amd64.tar.gz,解压后运行;postgres_exporter指标;Zabbix Agent或PostgreSQL Plugin监控PostgreSQL性能(如缓冲区命中率、锁等待、复制延迟等),支持自动告警(邮件、短信);check_pgactivity插件(sudo apt install nagios-plugins-postgresql),检查PostgreSQL服务状态、连接数、查询性能等。EXPLAIN/EXPLAIN ANALYZE:分析查询执行计划,识别性能瓶颈(如未使用索引、全表扫描);EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;
关注Seq Scan(全表扫描)、Index Scan(索引扫描)、Execution Time(执行时间)等指标。VACUUM:清理表中已删除或更新的数据,释放空间(自动运行,但可手动触发);VACUUM (VERBOSE, ANALYZE) your_table; -- ANALYZE更新统计信息,帮助查询优化器
ANALYZE:更新表的统计信息,使查询优化器生成更优的执行计划;ANALYZE your_table;
CREATE INDEX idx_age ON users(age)),但避免过度索引(影响写入性能)。sudo apt install pgadmin4,访问http://localhost/pgadmin4登录。