导读:本期聚焦于小伙伴创作的《如何查看和监控PostgreSQL数据源的统计信息》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何查看和监控PostgreSQL数据源的统计信息》有用,将其分享出去将是对创作者最好的鼓励。

PostgreSQL作为常用的开源关系型数据库,提供了丰富的统计信息功能,能够帮助用户了解数据库的运行状态。下面我们先通过一张示意图了解统计信息的作用范围:

如何查看和监控PostgreSQL数据源的统计信息

PostgreSQL内置统计视图

PostgreSQL默认提供了多个以pg_stat_开头的系统视图,这些视图存储了数据库运行过程中的各类统计信息,不需要额外安装插件就可以直接使用。

常用内置统计视图说明

视图名称统计内容
pg_stat_database数据库级别的统计信息,包括连接数、事务数、读写行数等
pg_stat_user_tables用户表的统计信息,包括顺序扫描次数、索引扫描次数、插入更新删除行数等
pg_stat_activity当前数据库连接的活动信息,包括执行的SQL、等待状态、连接时间等

内置视图查询示例

如果需要查看当前所有数据库的基本统计信息,可以执行以下SQL:

-- 查询所有数据库的连接数、事务数、读写行数统计
SELECT 
  datname AS 数据库名称,
  numbackends AS 当前连接数,
  xact_commit AS 已提交事务数,
  xact_rollback AS 已回滚事务数,
  tup_returned AS 返回行数,
  tup_fetched AS 获取行数,
  tup_inserted AS 插入行数,
  tup_updated AS 更新行数,
  tup_deleted AS 删除行数
FROM pg_stat_database
ORDER BY datname;

如果要查看当前正在执行的SQL活动,可以使用pg_stat_activity视图:

-- 查询当前活跃的连接和执行的SQL
SELECT 
  pid AS 进程ID,
  usename AS 用户名,
  datname AS 数据库名,
  state AS 连接状态,
  query AS 执行的SQL,
  query_start AS 查询开始时间
FROM pg_stat_activity
WHERE state != 'idle'
ORDER BY query_start DESC;

使用pg_stat_statements扩展监控查询统计

内置视图只能看到实时的或者累计的基础统计,如果需要分析具体SQL语句的执行情况,比如慢查询、执行次数、总耗时等,就需要安装pg_stat_statements扩展。

扩展安装与配置

首先需要在PostgreSQL的配置文件postgresql.conf中添加以下配置,然后重启数据库:

# 开启pg_stat_statements扩展
shared_preload_libraries = 'pg_stat_statements'
# 设置统计跟踪的SQL数量,默认5000
pg_stat_statements.max = 10000
# 是否跟踪所有数据库,默认on
pg_stat_statements.track = all

重启数据库后,在需要统计的数据库中创建扩展:

-- 在目标数据库中创建扩展
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

查询SQL执行统计

扩展创建完成后,就可以通过pg_stat_statements视图查询所有执行过的SQL的统计信息:

-- 查询总耗时前10的SQL语句
SELECT 
  query AS SQL语句,
  calls AS 执行次数,
  total_exec_time AS 总执行耗时毫秒,
  mean_exec_time AS 平均执行耗时毫秒,
  rows AS 返回总行数
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

统计信息的重置与维护

PostgreSQL的统计信息是累计存储的,如果需要清空历史统计重新开始统计,可以使用对应的重置函数:

  • 重置所有统计信息:SELECT pg_stat_reset();
  • 重置pg_stat_statements的统计:SELECT pg_stat_statements_reset();

需要注意,重置操作会清空所有历史统计数据,建议在需要重新统计的场景下使用,日常监控不需要频繁重置。

实际监控场景建议

在日常运维中,可以结合内置视图和pg_stat_statements扩展实现全面的统计监控:

  • 定期检查pg_stat_database了解数据库整体负载
  • 通过pg_stat_user_tables分析表的访问情况,优化索引配置
  • pg_stat_activity实时排查阻塞、慢查询问题
  • 通过pg_stat_statements定位高频、高耗时的SQL,进行针对性优化

如果需要长期监控,还可以将统计信息定时采集存储到专门的监控表中,结合可视化工具展示趋势,更方便地发现数据库的性能变化。

PostgreSQL统计信息数据源监控pg_stat_statements修改时间:2026-05-30 21:42:59

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。