pganalyze Blog

3 篇内容

技术文章pganalyze Blog

Postgres Monitoring for SQL Server DBAs: Statistics and Logs 101

本文面向从 SQL Server 转向 Postgres 的 DBA,系统梳理 Postgres 监控数据的来源与配置方法。作者先用任务对照表指出两者的本质差异:SQL Server 的诊断多为查询时决策,而 Postgres 必须在事件发生前决定是否记录,未写出的日志行事后无法恢复。文章介绍 pg_stat_activity(实时快照而非累计值)、pg_stat_* 累计视图与 pg_stat_statements(聚合查询统计)的定位与读法,并给出具体配置:启用 pg_stat_statements 需改 shared_preload_libraries 并重启、log_directory 要移出 $PGDATA、log_line_prefix 建议含 %m/%p/%q 及用户数据库应用字段、log_min_duration_statement 配合采样、开启 log_lock_waits 与 log_temp_files,以及用 pg_monitor 授予非超级用户监控权限。文中还剖析日志目录权限导致采集代理无法遍历、前缀尾部空格被复制丢失等常见陷阱,并辩证对比 Query Store、Extended Events 与 auto_explain 的取舍。结论是 Postgres 记录内容高度可配置但默认保守,需提前规划才能支撑事后排障。

推荐收录。文章给出了可直接落地的配置项(pg_stat_statements、log_line_prefix、log_min_duration_statement、pg_monitor 授权)和一张按问题定位数据源的对照表,并解释了 Postgres 与 SQL Server 在“记录时机”上的本质差异及 $PGDATA 权限等真实踩坑点。适合从 SQL Server 迁移或负责 Postgres 监控的 DBA、SRE 与后端工程师;需注意其出自监控厂商,部分建议带有工具倾向。

技术文章pganalyze Blog

Postgres in Production Special Series: How to Query pg_stat_statements to Find Slow and Expensive Postgres Queries (Part 7)

本文是 pg_stat_statements 深入系列第七篇,讲解生产事故中如何查询该视图定位慢查询和高开销查询。作者指出 pg_stat_statements 只记录已完成语句且指标累计、没有时间线,因此应先查 pg_stat_activity 判断是否存在正在运行的长事务。获取时间窗口可用两种方法:隔时取两个临时表快照做差值,或在可重复负载下 reset 后重新查询,并用 pg_stat_statements_info 查看重置时间。排序不应只看 total_exec_time,还可按 calls、mean_exec_time、temp_blks_written 等发现高频、均值慢或写临时文件的查询。文章给出 SQL 示例和演示,并提醒最慢查询未必最值得优化;选择监控工具时要关注完整查询文本、采样频率、重置恢复和多工具锁竞争。其内容偏 PostgreSQL 监控实践,不展开执行计划内部原因。

推荐收录。文章给出可直接执行的 SQL 诊断流程,覆盖 pg_stat_activity 优先检查、快照差值/reset 两种时间窗口、多列排序指标和监控工具选型要点,证据具体且可迁移到生产 PostgreSQL 性能排查。适合 DBA、SRE 和后端工程师;需注意作者来自 pganalyze,工具选型部分有厂商视角,但核心方法仍具长期参考价值。

技术文章pganalyze Blog

Postgres in Production Special Series: Diagnosing High Cardinality Workloads in pg_stat_statements (Part 6)

本文是 pg_stat_statements 深度系列第六篇,聚焦高基数查询负载的诊断。作者将高基数定义为工作负载持续产生的唯一归一化查询数超过 pg_stat_statements.max 容量,导致扩展无法保留调优所需指标。文章指出唯一查询主要来自 ORM、动态 SQL、即席报表、AI 辅助工具以及 Postgres 17 及以下的变长 IN 列表。通过 Bluebox 演示,相同负载在 Postgres 17 产生 671 条唯一语句,Postgres 18 仅 120 条,验证了 IN 列表归一化的效果。文章给出五项诊断检查:了解 max 设置、观察重置后回填速度、监控释放计数器、查找缺失查询、观察 top 查询变化;并建议调整设置、升级到 Postgres 18、与开发团队协作。边界是演示基于特定工具,经验性建议需结合具体环境。

推荐收录。文章提供了可操作的五项诊断检查(如观察 pg_stat_statements_info 释放计数器、重置后回填速度),并给出 Postgres 17 与 18 的量化对比(671 vs 120 条唯一语句),帮助 DBA 和 SRE 判断监控数据是否因高基数负载而丢失。适合 PostgreSQL 运维、性能调优和可观测性建设场景,其诊断思路和工具来源分析可迁移到其他数据库监控实践。风险在于内容源于厂商博客且为经验总结,需结合自身负载验证。