《选哪个》
两大开源数据库,轻舟重剑各扬鞭。
轻舟MySQL融万象,重剑PG破千渊。
向量模型逐浪起,IO异步惊云巅。
更看华夏腾飞处,自主可控有新篇。
下周就进入12月份了,随着2025年即将落幕,又到了一年一度年终总结与规划的时刻。在数据库领域, MySQL和PostgreSQL这两大开源巨头的竞争格局也在发生着变化。
01-流行度趋势对比
DB-Engines流行度趋势排名中,MySQL的指数是一降再降。自我工作开始,得益于LAMP的经典架构而使得MySQL成为世界上最流行的开源数据库,到2019年,Oracle收购SUN继而拥有了MySQL,有了一波短暂的高潮之后,就开始断崖式的下跌,MySQL 8.x到9.x中间经历了6年,新功能隔靴搔痒,虽然大家都知道Oracle不会在开源领域好好培养自己的竞争对手,但MySQL落到如此地步也是足够让人唏嘘。
对比下来PG则是一路高歌猛进,近年来版本更新维持一年一个大版本,今年的PG18把异步I/O和升级秒切做成标配,大大提升了整体性能和可运维能力,更别提众多国产数据库选择在PG基础上进行研发,掌握了PG,就相当于掌握了至少5款国产数据库,无论是新手入门,还是老手的技术选型,选择哪款显而易见。
02-最新版本功能对比
- MySQL 给“AI 时代”开了扇门;PG 把“老问题”做到了极致
在AI浪潮席卷而来的今天,MySQL终于推出了向量功能,开始提供vector类型支持,并原生支持了VECTOR_DIM()、STRING_TO_VECTOR()、VECTOR_TO_STRING()三个函数,对比PG系的pgvector,具备丰富的向量距离计算函数和向量索引支撑能力,MySQL要追的还有很多。对比下来PG18重磅能力是实现了异步 I/O的产品化,可以大大提升顺序扫描、Vacuum、Bitmap Heap Scan的处理性能,使得PG离核心数据库更进一步。
- MySQL玩企业版的“语言融合”,PG 玩“润物细无声的”SQL能力”
开发效率方面,MySQL引入了JavaScript 存储程序支持,打破了传统存储过程只能使用 SQL 或 PL/SQL 的限制,适合需要调用 JS 库(如数学计算、文本处理)的复杂业务场景,提升开发效率,不过那么好的功能,当然只有在企业版中才能应用了。PG新版支持原生UUIDv7,虚拟生成列默认启用并且支持逻辑复制,returning直接获取新旧值,以后更新数据后要对比新旧值,再也不需要写触发器查两次表了,TPS直接翻倍。
- PG让“大版本升级”不再是运维噩梦,MySQL暂无对应杀器
运维体验方面,PG 18实现了一个重大突破。过去pg_upgrade升级主版本后,查询优化器需要重新收集统计信息,导致升级后的一段时间内查询性能不佳,即所谓的冷启动问题。PG 18解决了这个痛点,pg_upgrade现在可以在升级过程中保留查询计划器的统计信息,让数据库升级后能立刻达到预期的性能水平。此外,pg_upgrade本身也变快了,尤其是在处理包含大量表和序列的数据库时。新增的--jobs参数可以并行执行检查,而--swap参数则通过交换目录的方式来代替文件复制,进一步缩短停机时间。Mysql升级目前依然需要就地升级,备份→关机→替换→祈祷。
此外,PG早已不是单一的关系型数据库了,地理空间,时间序列,向量检索,机器学习,OLAP分析,全文检索,图数据库,PG拥有目前最繁荣的扩展生态,这一点也是被Oracle逐渐雪藏的MySQL难以企及的。
03-怎么选?
站在2025年的尾声,回望MySQL和PG的发展轨迹,PG似乎在技术创新和性能表现上占据了先机,当然MySQL也凭借其庞大的现有生态和简单易用的特点,依然在许多场景下是不可替代的选择。
不过实际工作中,数据库选型是一个十分复杂,有时又十分草率的活,复杂是如果当成一个工程项目去进行筛选和测试,要考虑和验证的点数不胜数,草率是因为诸多项目的数据库选型的决策者,往往都并不是最懂数据库的人,加上国产数据库的蒸蒸日上,拿着开源hadoop底座硬往银行核心交易系统强推的事,也不是没有出现过。
总之,对于新手入门,个人强烈推荐去学习和研究PG。
对于项目选型,问自己三句话:
- 预算谁批?
- 锅谁背?
- 半夜谁起床?
答案有了,数据库也就有了。