今天在浏览资料时看到一张图,展示了MySQL历年的代码提交(Commit)数量变化趋势:

从图中可以清晰地看到,自2006或2007年达到顶峰之后,MySQL的提交数量便一路下滑,如今的数值仅相当于巅峰时期的五六分之一!
另一张图来自Stack Overflow的2025年度开发者调查:

在这份调查中,PostgreSQL排名第一,大幅领先于MySQL。这确实让我有些意外,因为我记得在2022年时PostgreSQL的使用率还不及MySQL,没想到短短三年间差距已经如此明显。
当然,Stack Overflow的调查主要统计的是开发者在日常工作中使用的数据库,而市面上还有许多存量系统在使用MySQL,这部分数据并未被完全纳入统计。
于是我又去查看了DB-Engines的数据库排名:

还好,MySQL依然位居第二。但值得注意的是,与一年前相比,它的分数出现了大幅下降(-130.63分)。反观PostgreSQL,自2014年起其排名得分便一路增长,势头迅猛。

可以说,MySQL的存量市场和使用惯性依然存在,但其作为开源项目的精神感召力似乎正在消失。
那么,导致这一现象的原因究竟是什么?
曾在Amazon RDS for MySQL和MariaDB担任软件开发经理的Otto认为:根本原因在于作为开源项目的管理者,Oracle已经不值得信任了。
他甚至直言:“2026年别再使用MySQL了,它不是真正的开源软件”。其主要理由如下:
1. 开发工作闭门进行
公开的Bug跟踪系统并非Oracle内部主要的开发工具。少数为MySQL贡献代码的外部开发者会发现,他们提交的Pull Request和补丁虽然会被标记为“已接收”,但往往得不到任何实质性反馈。这些修改可能出现在下一个MySQL版本中,也可能不会,甚至可能被Oracle内部重写。
在Git的提交者信息栏里,通常只会出现Oracle员工的名字,真正的贡献者或许只能在某篇博客中被简单提及。长此以往,自然就没人愿意再为MySQL贡献力量了。换句话说,MySQL虽然通过GPL许可证开源,但其本身的开发模式已不再符合一个标准开源项目的协作精神。
2. MySQL在技术上显露颓势
MySQL 8.0.29版本将 ALTER TABLE 的默认执行方式切换为更激进的in-place模式,但当时的实现并不成熟,在大量边缘场景下会导致失败,进而引发数据库崩溃甚至数据损坏,影响了许多用户。这个问题直到一年后的MySQL 8.0.32版本才得到彻底解决。
自2018年MySQL 8.0发布后,长达六年时间都没有重要的新版本发布,直到2024年才推出8.1版本,且新功能乏善可陈,这让许多用户感到失望。
更有基准测试显示,在写入密集型负载下,MySQL 9.0(或指代未来的9.5)的吞吐量比8.0版本又下降了约15%,这确实令人沮丧。

在安全性方面,MySQL也存在不少问题。仅在2025年,MySQL就发布了123个与安全相关的CVE(通用漏洞披露),而同期MariaDB只有8个。
3. Oracle正在引导用户转向收费/闭源产品
Otto指出,无论是MySQL软件本身、其文档还是官方网站,都在各个层面引导用户放弃开源版本,转而使用收费或闭源的MySQL版本。
我特意去MySQL官网(https://www.mysql.com/cn/)查看了一下:

的确,首页醒目位置展示的是MySQL企业版、云数据库HeatWave、AI和Cluster,完全找不到社区版的入口。
我又查看了其产品介绍页面:

这些产品名称让人有些困惑:标准版?经典版?这些是什么?经过搜索发现,页面列出的所有产品都是收费的。免费的社区版甚至不配出现在这个“产品”列表中。
如果你想下载社区版,需要跳转到下载页面,并一直拉到最底部才能找到入口:

早在2009年,MySQL之父Monty Widenius就曾撰文警告:Oracle对MySQL的承诺都是空头支票。

当时Oracle计划收购Sun公司(MySQL隶属于Sun旗下),欧盟因担心此举会扼杀竞争,几乎要否决这笔交易。后来,Oracle做出了为期五年的十项承诺,欧盟才予以放行。
Monty当时预测:“Oracle可能会将开发重点放在企业版上,或者增加闭源扩展,从而导致社区版的活力和兴趣下降。” “他们可能会放弃开源,关闭MySQL的某些部分。”
现在看来,Monty的预言正在应验。
从纯粹的商业角度看,五年的承诺期早已过去,Oracle完全有权根据自身利益来决定如何发展MySQL这个产品,这无可厚非。只不过,用户也会“用脚投票”,选择其他真正开源的产品,例如MariaDB。

MariaDB是MySQL最直接的替代品,兼容性极佳。对于新项目或重大的重构项目,开发者也可以直接选择PostgreSQL。
按照目前的发展趋势,我感觉在两三年内,PostgreSQL就将在DB-Engines的统计中全面超越MySQL。我个人从零几年就开始使用MySQL,大大小小的项目用了很多,对它很有感情。看到它从巅峰逐渐滑落,心中不免有些感慨。
最后,分享一个有趣的小故事。Monty Widenius有三个孩子,名字分别是My、Maria和Max。这三个孩子非常幸运,因为他们的父亲将他们的名字永远地“刻”在了三个数据库产品上:
作为开发者,选择合适的技术技术栈对于项目的长期健康至关重要。关于数据库的选型与趋势讨论,你可以在云栈社区找到更多同行的见解与实践分享。