2026年8月12日(周三)19:00–20:30,由中国PG分会、IvorySQL社区与TechTalk技术交流社区联合主办的「三十而立・全球时刻——PG 30周年系列直播」第六期圆满举行。本期主题为 “中国开发者与PG内核——我们改得动吗?我们贡献了什么?”
本期由尚雷担任主持人,嘉宾包括萧少聪、崔鹏、吕海波、杨向博、周煦能五位老师,围绕中国开发者对PG社区的贡献现状、内核修改的难度与可行性、源码学习路径、表膨胀等核心痛点,以及如何参与社区贡献等话题,展开了坦诚而深入的对话。
PG 17发布时全球贡献者463人,其中华人约43人,占比接近10%。相比早期已有显著增长——PG刚进入中国时,国内几乎没有内核层面的贡献者。
中国开发者的贡献历程大致分为几个阶段:第一阶段以文档翻译为主;第二阶段(2017年左右),中国厂商开始在国际会议演讲,成立PG分会;第三阶段(2018年起),华人名字成规模出现在版本致谢名单中;第四阶段,出现华人Committer,国内厂商开始成规模地向国际社区回馈代码。
社区贡献不仅限于提交Patch或成为Committer,还包括Bug报告、测试场景构建、文档翻译等。国内使用场景的复杂程度有时超出国际社区的想象,如果不主动提交Issue,国际社区就不知道这些需求的存在。借助AI辅助将中文Bug描述转化为英文Issue,是当前降低参与门槛的有效途径。
关于PG内核修改,合入社区主干比在自己的分支上修改要困难得多。中国开发者近年来的贡献在增加,从之前没有华人Committer到现在已有入选者,但社区核心决策层中仍没有国人面孔,话语权的提升仍需时间。
社区对核心特性的合并持谨慎态度,只要有反对声音就难以推进;而企业可以根据自身考量决定是否接受改动代价,这往往导致国内厂商的修改形成硬分叉,难以合入主干。
PG内核代码库约150万行,核心代码约10万行。阅读源码不应试图通读所有代码,而应采用问题驱动式学习——基于生产中的具体问题,利用AI辅助梳理代码链路。也可以从高频函数入手,使用GDB打断点调试,观察数据流动;或者从执行计划的选择入手,跟到优化器的最小代价选择函数。
理解数据库的前提是掌握计算机底层原理——从键盘输入数据到最终写入硬盘的完整路径。如果连这个基础都没有,即便有AI辅助也难以真正理解数据库内核。
AI显著降低了阅读和理解代码的门槛。PG所有讨论都公开在邮件列表中,可以把讨论链接丢给AI,快速了解某个改动的前因后果。
表膨胀是PG最痛的问题之一。在实际生产中,长事务和复制槽未清理会导致严重的表膨胀和索引膨胀。团队通过分区表、控制非必要索引、让更多更新走HOT路径等方式进行规避。有团队在16、17年左右尝试给PG增加异步清理钩子,在业务低峰期更激进地进行空间回收,将表膨胀率从30-40%降到5%以内。很多内核修改的起点其实是业务里面的真实痛点。
社区并非没有关注表膨胀问题——PG 17有增量优化,PG 19支持了原生的在线VACUUM FULL。但根本性解决方案(如64位事务ID)仍在讨论中,从2020年推到现在依然没有实质进展。
从运维角度,表膨胀可以通过监控、参数调优、定时任务等手段治理,不一定非要等内核彻底解决。
In-place update与out-of-place update是数据库诞生之初就存在的两条不同技术路线,没有绝对优劣。Oracle的UNDO机制发展了几十年才相对成熟,即便那样也仍有UNDO空间不释放的问题。
关于迁移,不应期望新数据库完全兼容旧数据库的行为,而应主动适应新数据库的特性。厂商也需要把文档写好,让AI能帮上开发者的忙。
中国开发者参与社区的两个主要障碍:一是不习惯用邮件列表沟通,二是不习惯用英文表达。这两个问题现在都可以借助AI解决——先写好中文再翻译发出去。
贡献可以从日常运维中的重复性工作入手,发现PG缺失的功能,在AI辅助下尝试实现,暂时不想提交社区可以先在内部使用或做成扩展。提Bug也是很好的切入点——生产中遇到的问题,借助AI在源码中验证后提交到社区。
国内厂商应把员工参与社区贡献纳入KPI,而不仅仅是靠个人情怀。
关于用Rust重写PG:底层软件对语言有特定要求,必须使用编译型语言。Rust的内存管理更好,但会带来额外的性能检查开销。况且用AI写了几百万行代码后,用哪种语言写的已经不重要了。
萧少聪:建议大家用AI手段去理解产品,但不要祈求AI帮你做所有设计,真正掌握知识必须自己干过。
杨向博:国内厂商应把员工参与社区贡献纳入KPI,而不仅仅是靠个人情怀,实打实回馈社区。
崔鹏:中国拥有全球最大的PG用户群和最活跃的AI开发群体,两者合流之时,就是中国开发者从参与者变成引领者之日。
吕海波:PG与操作系统、体系结构在深层次交汇。把深处知识关联起来的能力,目前还是人的优势。
周煦能:AI只是工具,最终责任还是人来。要追求对技术的理解比AI更深。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70043484/viewspace-3179738/ ,如需转载,请注明出处,否则将追究法律责任。