标签

PostgreSQL

PostgreSQL 诊断老兵:用四个 GUC 拆开语句的 CPU、缺页与上下文切换

来源: postgr.es 36
PostgreSQL 的 、、 和 是一组非常早期、也很少被日常提起的诊断参数。它们不会告诉你完整的执行计划,也不是现代性能分析器的替代品;但当你需要回答“这条语句到底慢在解析、规划,还是执行”,并进一步观察 CPU 时间、页面错误和上下文切换时,它们仍然有独特价值。 这几个参数通过 PostgreSQL 的统一配置系统(GUC)控制,并把资源统计写入...

PostgreSQL 19 上线前准备:用 Beta 3 提前排查兼容性问题

来源: postgr.es 37
PostgreSQL 19 Beta 3 已于 2026 年 8 月 13 日发布,发行说明也在持续完善。正式版日期尚未公布,但按照 PostgreSQL 项目通常在 9 月或 10 月发布的节奏,现在已经进入升级准备窗口。 这时最有价值的工作不是背诵新功能列表,而是把真实数据库、扩展和应用查询放到 PG 19 上跑一遍。发行说明仍可能变化,Beta ...

用 Go、Redis 与 PostgreSQL 搭建隐私优先的自托管短链接服务

来源: oschina.net 46
短链接服务看似只是一次重定向,真正上线后却会同时面对链接查询、身份认证、访问记录、缓存一致性和数据隐私等问题。shrl.io 的架构把这些职责拆成四个 Go 微服务,并用 PostgreSQL、Redis、分析 worker 与 SvelteKit 前端组合成一套可以通过容器启动的自托管系统。 这类设计的价值不只是“自己部署一个短网址”,而是让链接数据...

一张 5 行小表,为什么能让 PostgreSQL 查询慢上千倍

来源: postgr.es 33
在一条包含 9 张表的计费查询中,增加一张只有 5 行的查找表,执行时间却从约 0.3 ms 上升到 467 ms。问题不在数据量,而在 PostgreSQL 的连接规划边界:默认的 让查询跨过阈值后,优化器不再以同样方式探索连接顺序,最终从高效的嵌套循环转向昂贵的哈希连接。 这个案例提醒我们:SQL 性能并不总是随查询复杂度平滑变化。多一个 ,可能不...

用 DBeaver 将 Northwind 示例数据库加载到 PostgreSQL

来源: postgr.es 30
学习 SQL 不一定要从生产数据开始。一个结构清晰、数据规模适中的示例数据库,足以帮助你练习 、过滤、连接、聚合和表结构设计。Northwind 原本来自 Microsoft 数据库生态,但借助现成的 PostgreSQL 脚本,可以很快在本地搭建出一套可查询的练习环境。 本文演示如何使用 DBeaver 打开并执行 ,将表结构和示例数据加载到 Pos...

接手一套糟糕的 PostgreSQL 数据库:从止损到治理

来源: postgr.es 42
接手遗留数据库,往往意味着面对不合理的编码、几百列的大表、缺失的索引、没有约束的数据,以及没人敢碰的配置。它们通常不是某个人单独造成的,而是赶工、团队缺少 DBA、系统自然膨胀,或者架构决策脱离实际维护需求共同留下的结果。 真正重要的不是追责,而是建立一条可验证、可持续的修复路径:先了解谁在痛苦,再检查数据库的真实状态,最后用小项目逐步降低风险。 “坏...

当 Postgres 遇见 Django:一次意外却热烈的社区聚会

来源: postgr.es 34
这次 Postgres meetup 原本有点反常:它安排在八月最后一周,而 Prairie Postgres 社区过去几乎从不在八月组织活动。更特别的是,活动与 Djangocon.US 同期举办,起意于 Keanya Phelps 的提议,最终却迎来了满场听众。 活动开始前一周,组织者 Henrietta Dombrovskaya 仍不确定究竟会有...

PostgreSQL 里的 NULL:计算没有报错,不代表结果符合预期

来源: postgr.es 31
除以零,PostgreSQL 会直接报错;把 转成整数,也会得到错误。但把一个值除以 ,查询通常可以顺利执行,结果只是变成 。这正是 SQL 中最容易被低估的细节: 不是一个普通值,而是“未知”状态的标记。 未知会沿着比较、算术、字符串拼接、聚合、窗口函数和 条件传播。查询没有报错,并不意味着业务结果正确。理解这些规则,也就能理解为什么 约束不是形式主...

把 PostgreSQL 日志参数理顺:控制严重级别、触发 SQL 与消息细节

来源: postgr.es 36
PostgreSQL 日志看似只是“多打一点”或“少打一点”,实际由三个独立问题决定:什么严重程度的消息可以进入服务器日志,错误发生时是否附带触发它的 SQL,以及每条消息包含多少诊断字段。理解 、 和 的边界,才能在排障信息与日志噪声之间取得平衡。 决定哪些服务器消息会写入日志。它是一个严重级别过滤器:配置为某个级别后,该级别及更严重的消息会保留,更...