Turso 要用 Rust 核心做一个新的 Postgres 前端
Turso 把自己定位成数据库的 LLVM:一个 Rust 核心承接多个 SQL 前端,SQLite 是第一个,Postgres 是下一个。官方说目标是核心功能兼容而不是 100% 兼容,并设想非进程内连接、浏览器嵌入、单文件和自动更新的物化视图等形态。目前没有发布包,只能从源码构建。名字里有 Postgres 不等于通过了协议和语义验收,把它当生态实验看更合适。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 35 条。
Turso 把自己定位成数据库的 LLVM:一个 Rust 核心承接多个 SQL 前端,SQLite 是第一个,Postgres 是下一个。官方说目标是核心功能兼容而不是 100% 兼容,并设想非进程内连接、浏览器嵌入、单文件和自动更新的物化视图等形态。目前没有发布包,只能从源码构建。名字里有 Postgres 不等于通过了协议和语义验收,把它当生态实验看更合适。
文章以 256 个分片、每分片一主两副本、共 768 台服务器承载约 1 PB 和数百万 QPS 的设想展开。副本提供读扩展和高可用,却分摊不了主库的 WAL 写入和数据容量;分片把数据和查询分给独立的主库,代理与路由层则要掌握分布规则、连接复用、查询路由、跨分片和故障期间的排队行为。真正的难点在控制面,不是加更多只读副本。
Bharath Rupireddy 提交了面向 PostgreSQL 20 的并行堆 vacuum v20。这一版主要回应 Andres Freund 的意见:并行 vacuum 的回调不该放进 table AM 接口,因为 vacuum 本身就是表访问方法内部的操作,于是改为通过 vacuumparallel.c 本地的回调结构体传递。补丁集精简为两个,一个重构堆扫描状态,另一个给 vacuum 第一阶段加并行支持。
Ayush Tiwari 提议在 relcache 里缓存分区索引的父 OID,减少 INSERT ... ON CONFLICT 在分区表上反复扫描 pg_inherits 的开销,v1 在热缓存下最高快 2.9 倍。Álvaro Herrera 建议改缓存完整祖先列表,但 pg_inherits 变更不触发 relcache 失效,索引重新挂载时会留下脏数据。v2 改为让整个后代索引子树失效,TPS 最高提升 31%。
commit f38afa4ab 带来一个竞态:sequencesync worker 还在运行时执行 ALTER SUBSCRIPTION ... REFRESH SEQUENCES 会报错,在 valgrind 的慢环境里,worker 因权限不足退出重启之后再执行就会失败。Tom Lane 质疑该提交的设计,认为应该在后端修而不是给测试打补丁。Amit Kapila 提出在 REFRESH 期间加 AccessExclusiveLock,并计划先回退这次提交。
TimescaleDB v2.26 和 v2.27 给 Tiger Cloud 带来明显提速:压缩数据上的聚合查询最高快 70 倍,压缩 chunk 上的 UPDATE 和 DELETE 最高快 160 倍。企业计划的存储规格提到 80000 IOPS、最大 64 TB。此外 pg_textsearch v1.0.0 在 Postgres 内原生支持 BM25 全文检索,PostgreSQL Source Connector 转入生产可用。
Tom Lane 等了一段时间无人反对后推送回退,还需从 PG19 发布说明里删掉。
限制 get_actual_variable_range 叶页读取的补丁被排到了 0002 的位置。
借鉴 dynahash 的线性哈希,桶数与条目数用共享内存里的原子变量记录。
Antonin Houska 质疑强制回调会让不支持批处理的表访问方法出问题。
填充检查没有区分 base64url 与标准 base64,修复已在 v19 发布前推入。
争议在条目大小该取哪个字段,文档需说明它不等于实际内存占用。
Amazon 正在修复,目前尚未公布根本原因和受影响的客户数量。