标签

PostgreSQL

PostgreSQL 的 enable_partitionwise_join:让分区表按分区对齐再 Join

来源: postgr.es 49
是 PostgreSQL 里一个经常被忽略的优化开关。它的作用很直接:当两张表都按 Join Key 分区,并且分区边界兼容时,优化器可以把一次大 Join 拆成多组“对应分区之间的小 Join”。这通常能减少扫描范围、降低中间结果规模,也更容易触发每个分区上的局部优化。 但它不是打开就一定变快的魔法开关。它默认通常是关闭的,原因也很工程化:分区越多,...

PostgreSQL 30 年:从研究项目到数据库默认底座

来源: postgr.es 30
1996 年 7 月 8 日,PostgreSQL 社区接过 Postgres95 留下的火种。三十年后,它已经不只是一个“开源数据库选项”,而是很多团队设计后端系统时的默认起点:应用数据库、分析型扩展、队列、全文检索、地理数据、向量检索,越来越多能力都围绕它展开。 PostgreSQL 的故事有一个很工程化的转折点:它从 Berkeley 的研究项目...

从 PostgreSQL 换到 ClickHouse:高吞吐缓存查询的现实取舍

来源: infoq.com 40
Momentic 为 AI 驱动的软件测试平台重构了缓存系统:规模达到每天超过 200 万次查询、总计约 200 亿条记录,同时把平均响应延迟维持在约 250 ms。关键变化不是给 PostgreSQL 再加一层补丁,而是把缓存查询负载迁移到列式数据库 ClickHouse。 这类迁移值得后端团队关注,因为它不是“数据库谁更强”的抽象争论,而是一个典型...

用 ClickHouse 扛住 200 万次/天缓存查询:从 PostgreSQL 迁移的工程取舍

来源: infoq.com 48
Momentic 在重构其 AI 软件测试平台的缓存系统时,把存储层从 PostgreSQL 迁到列式数据库 ClickHouse,用来支撑每天超过 200 万次查询、总量约 200 亿条缓存记录,并把平均响应延迟维持在约 250 ms。这个案例值得关注,不是因为“PostgreSQL 不行”,而是因为缓存查询的形态一旦变成大规模读、宽表扫描、按条件过...

用 pgBackRest TLS 模式做 PostgreSQL 灾备恢复:少一点 SSH,少一点横向移动风险

来源: postgr.es 53
PostgreSQL 灾备恢复里,pgBackRest 通过 SSH 拉取备份是一条成熟路线:简单、可靠、很多团队已经这么跑。但当 DR 服务器越来越多、隔离区越来越严格、密钥轮换越来越频繁时,SSH key 的分发和审计会变成运维负担。pgBackRest 的原生 TLS transport 提供了另一种模型:DR 服务器不需要拿到能登录备份节点的 ...

用 PostgreSQL 做一个“不诚实”基准测试:数字没造假,叙事才是陷阱

来源: postgr.es 45
数据库基准测试最危险的地方,往往不是数字本身是假的,而是数字背后的比较口径被悄悄换掉了。一个 PostgreSQL 工作负载可以从几百 TPS 变成几十万 OPS:缺索引的“基线”、关闭部分持久化保证、减少实际业务工作、把多次请求塞进函数、再把 TPS 改口叫 OPS,图表就会一路向上。 这篇文章不把它当成 PostgreSQL 性能神话,而是把它当成...

PostgreSQL 的 enable_partitionwise_aggregate:用内存换分区聚合速度

来源: postgr.es 49
PostgreSQL 里很多 参数默认都是打开的,用来让优化器在必要时考虑某类执行计划。 有点特别:它默认关闭。原因很直接,分区级聚合可能明显加速按分区表统计的查询,但它也可能让每个分区都产生自己的聚合节点,内存消耗随分区数量放大。这个开关不是“越开越快”,而是一次明确的资源交换。 当查询访问分区表并执行 或聚合函数时,普通计划可能先扫描多个分区,再在...

PostgreSQL 20 将锁等待统计细化到每个后端进程

来源: postgr.es 50
PostgreSQL 20 的开发分支加入了一项很实用的可观测性改进:后端进程级别的锁统计。过去我们可以通过 看到锁等待次数、等待时间、fast-path exceeded count 等信息;这次改动把同类数据下钻到了 per-backend 维度,让排查“到底是哪条连接在等锁、等了多久、是否频繁撞上 fast-path 限制”变得更直接。 很多人排...

Postgres 14-16 复制回放死锁:升级备库前先看这个坑

来源: postgr.es 38
PostgreSQL 14、15、16 的最新小版本 14.23、15.18、16.14 引入了一个回归问题:在特定 WAL 回放场景下,备库或 PITR 恢复实例可能卡在 相关的 LWLock 等待上。这个问题麻烦的地方不在于“所有人都会中招”,而在于它正好踩中了很多团队的常规补丁流程:先升级 standby,再升级 leader。 目前已知受影响范...