别把 AI 代理直接接到生产库上
AI 写出来的 SQL 看着对,却不知道生产库长什么样。Radim Marek 举了 2025 年 7 月的例子:一个编码代理在封网期抹掉了生产库,随后还谎报经过;更常见的是锁表迁移、基于错误假设的查询和凭感觉加的索引。他还提到 Anthropic 的参考 PostgreSQL MCP 服务器曾因允许分号而被 SQL 注入。他给的路子是离线优先:把模式与统计导成 JSON 快照提交进版本库并每晚更新,让代理拿到结构而不碰生产连接。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 21 条。
AI 写出来的 SQL 看着对,却不知道生产库长什么样。Radim Marek 举了 2025 年 7 月的例子:一个编码代理在封网期抹掉了生产库,随后还谎报经过;更常见的是锁表迁移、基于错误假设的查询和凭感觉加的索引。他还提到 Anthropic 的参考 PostgreSQL MCP 服务器曾因允许分号而被 SQL 注入。他给的路子是离线优先:把模式与统计导成 JSON 快照提交进版本库并每晚更新,让代理拿到结构而不碰生产连接。
PAX 把页内数据按列切成 minipage,定长列用位图加密集数组,变长列用偏移数组,为的是减少缓存污染。Lætitia AVROT 指出这套设计和 PostgreSQL 的 MVCC 打架:论文里删除要立刻压紧 minipage,而 PostgreSQL 必须把旧版本行留在原地。她提出单独留一个存放 xmin、xmax、ctid 的元数据 minipage,删除时只做标记。文章没有基准数据,也还不是补丁。
要给分析备库、QA 和沙箱送生产数据,又不想让它们连上主库。Richard Yen 建议回到 PostgreSQL 8.2 就有的日志传送:用 archive_command 把 WAL 推到集中归档,各消费端用 restore_command 取回并持续恢复。他把这个集中归档叫作 WAL Hub。这样不占复制槽,也没有流复制的背压;代价是有一点延迟,备库不会出现在 pg_stat_replication 里。
Doug Pagnutti 用工业物联网负载测了加硬件的边界。当索引超出内存之后,再加内存和 CPU 对写入几乎无益,瓶颈落在磁盘 I/O 上,而索引更新基本是串行的,用不上多核。查询这边完全不同:内存变大能缓存数据并在内存里建哈希表,多核能让聚合走并行,收益明显。结论是靠硬件优化查询有效,救摄取无效;摄取吃紧时应考虑 TimescaleDB 这类专用时序方案。
pg_clickhouse 让 PostgreSQL 直接查询 ClickHouse。0.1.10 把 JSON 与 JSONB 的 -> 和 ->> 映射成 ClickHouse 的子列语法下推,补上 clock_timestamp 等时间函数,并支持 ROW_NUMBER、RANK、LEAD、LAG 等一批窗口函数。HTTP 驱动改为流式返回结果集,读 1GB 表时内存峰值从 1GB 以上降到 73MB。
Peter Geoghegan 发出冻结前的 v24,剩余打磨赶不上截止日期,性能与架构本身获认可。
审查提出 replica identity 要求、swap_relation_files 错误处理与改用 multi_insert 等意见。
sqlsmith 压测报出页面校验不符,Daniel Gustafsson 认为与已知的可见性映射清理问题相关。
Robert Haas 提交三个补丁,扩展选项经 GUC 回调校验,加载顺序仍要使用者自己保证。
wait_for_catchup 改用 WAIT FOR LSN,连接异常时快速失败,不再空等到超时。
038_walsnd_shutdown_timeout 用例挂起两分多钟,pg_ctl 无法按时关停服务器。
选项用 VARIADIC 字符串而非命名参数的设计受到质疑,构建告警已由后续提交修好。
v15 引入 totaltime_options,各扩展可分别申请仪表化级别,原先开销约为 20%。
改用独立共享内存块存放仪表化数据,作者认为即便没有索引预取也值得收进去。
未命名子查询触发 rtoffset 错误,表采样导致 RTI 故障,与规划器扩展的兼容也受质疑。