Warner Music 把 TimescaleDB 分块缩到 7 天
团队解释了缩短 chunk 区间的原因和取舍,是一份时序库生产调优的实例。
保留原始来源与发布日期的新闻、博客和活动。
团队解释了缩短 chunk 区间的原因和取舍,是一份时序库生产调优的实例。
用于主动制造协议层的合法变化,帮助发现生态里对协议实现过于死板的客户端。
空表加带域默认值的列时 ALTER TABLE 会报错,与 CREATE TABLE 不一致,还会影响 pg_dump 恢复。
CPython 的 JIT 已经在主仓库里以实验形式存在了一段时间。指导委员会发公告要求补齐正式决策:走 PEP 流程说明目标、维护承诺和取舍,否则就把它移出主仓库。公告不是否定 JIT,而是把一个影响运行时的大改动重新拉回正式流程。JIT 牵动发行版打包、调试器与性能剖析工具、性能承诺和长期维护成本,依赖 Python 性能路线的团队可以跟进 PEP 进展,同时别把主分支上的 JIT 当作稳定的生产承诺。
npm 生态又一次出现供应链攻击,被称作 IronWorm 的恶意代码波及 36 个包;同期还出现了针对 .github/setup.js 的供应链告警。前端依赖树庞大,包维护者账号、发布权限、传递依赖、锁文件和 CI 构建都是攻击面。团队应尽快复核锁文件与最近发布的版本,跑一遍依赖审计,收紧 CI 令牌权限,检查包的来源证明与可信发布配置,并为生产项目保留物料清单和可回滚的构建产物。
Crunchy Data 写了一篇整数溢出的复盘:用 serial 或 int4 做主键的系统,在增长几年后会突然撞上序列上限,一旦触发就直接阻断写入。这类问题的特点是长期无声、爆发突然,靠事后处理代价很高。可行的做法是把序列余量纳入例行巡检,检查 int4 主键与对应序列的当前值和最大值,提前排期迁移到 bigint;迁移本身要评估锁的持有时间、索引重建、外键约束以及应用侧的类型边界。
持久化执行本来是后端基础设施的一类模式,通常靠 Temporal 这样的独立引擎实现。微软把它做成了 PostgreSQL 扩展 pg_durable:工作流直接用 SQL 定义,每一步都记检查点,崩溃、重启或某步失败之后可以从断点继续。项目支持 PostgreSQL 17 和 18,采用 PostgreSQL 许可证,文档指向 Azure HorizonDB。它短期未必能替掉现有队列引擎,但和事务边界、连接池的配合值得先评估。
Nikolay Samokhvalov 在 PostgreSQL 19 新增的外键检查快速路径里发现三处问题。这条路径把外键检查攒成批处理,但延迟刷批时会执行用户定义的转换函数或操作符,于是给了重入的机会:满批刷新时重入会造成越界写入并可能崩溃;子事务回滚会丢掉父事务缓冲的行,导致外键检查被跳过、孤儿数据得以提交;跨表重入还会让哈希迭代漏掉条目。三者都能由普通用户用带隐式转换的自定义类型复现。Amit Langote 已确认并开始排查。
Jelte Fennema-Nio 想把 libpq 内部语句和应用语句分开,避免 DISCARD ALL 之后的冲突。
空表加带域默认值的列时,约束检查里的除零错误会让命令失败,与 CREATE TABLE 行为不一致。
Jacob Champion 把毫秒计算的 static_assert 换成检查乘法,与现有溢出检查实践一致。
dblink 与 postgres_fdw 的远程消息在 client_min_messages 为 log 时会传到客户端,改法未定。
Andrew Atkinson 写了一份容器化的 Beta 试用步骤,不必动现有实例就能验证兼容性。
Ayush Tiwari 提议把 contrib 里的 refint 模块在 PostgreSQL 20 中删掉。文档早就写明它的功能已被内置外键取代,最近又接连暴露问题:级联 UPDATE 置空时崩溃、计划缓存损坏,维护成本超过了它作为示例代码的价值。补丁从 contrib/spi 移除相关文件并调整升级测试。Nathan Bossart、Daniel Gustafsson 和 Tom Lane 都赞成移除,建议先在文档里预告。
PostgreSQL 按行存储,一张 15 列的表哪怕只查 2 列,扫描时仍要把匹配行的全部列读进来。文章给的例子是每行只需要 12 字节却读了 200 字节,放大约 16 倍;索引解决不了这件事,因为索引优化的是选哪些行,不是每行读多宽。列式存储按列组织数据,只读需要的列。TigerData 给出的折中是 Hypercore:新数据保持行格式保证写入速度,旧数据转成列格式提升分析扫描效率。
PostgreSQL 19 Beta 1 发布次日,CloudNativePG 就在 postgres-containers 仓库放出 19beta1-minimal-trixie 系列镜像。做法很短:在 Cluster 资源里把 imageName 指向该镜像,设好实例数和存储,部署后用 kubectl exec 执行 select version() 确认版本。项目方明确 Beta 镜像不用于生产,目的是在正式发布前把缺陷试出来。