为何在中国 MySQL 远比 PostgreSQL 流行?

首先在全球范围内,MySQL 一直是领先于 PostgreSQL (下文简称 PG) 的 。下图是 DB-Engines 的趋势图,虽然 PG 是近 10 年增长最快的数据库,但 MySQL 依然保持着优势 。

为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图
再来看一下 google Trends 过去一年的对比:
为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图
MySQL 也依然是明显领先的 。而进一步看一下地域分布的话:
为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图

为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图

为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图

为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图
绝大多数地区依然是 MySQL 领先,份额对比在 60:40 ~ 70:30 之间;少数几个国家如俄罗斯不分伯仲;印度的对比是 85:15;而中国则是达到了 96:4,也是 Google Trends 上差异最明显的国家 。
为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图
笔者从 2009 年左右开始学习数据库相关知识,接触到了 MySQL 5.1 和 PG 8.x 。而深度在工作中使用则是 2013 年,那时加入 Google Cloud SQL 开始维护数据库,MySQL 从 5.5 开始,到之后 2017 年 Cloud SQL 推出了 PG 服务,从 9.6 开始 , 后来一直同时维护 Google 内部的 MySQL 和 PG 分支 , 也就一直关注着两边的发展 。18 年回国后,进一步熟悉了国内的生态 。
下面就来尝试分析一下 MySQL 在中国流行度遥遥领先于 PG 的原因 。
一、windows
为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图
MySQL 在 1998 年就提供了 Windows 版本,而 PostgreSQL 则到了 2005 年才正式推出 。之前读到的原因是 Windows 早期的版本一直无法很好支持 PostgreSQL 的进程模型 。
二、上手门槛
【为何在中国 MySQL 远比 PostgreSQL 流行?】MySQL 上手更简单,举几个例子:
  • 连 PG,一定需要指定数据库,而 MySQL 就不需要 。psql 大家碰到的问题是尝试连接时报错 FATAL Database xxx does not exist 。而 mysql 碰到的问题是连接上去后 , 执行查询再提示 no database selected 。
  • 访问控制的配置,首先 PG 和 MySQL 都有用户系统,但 PG 还要配置一个额外的 pg_hba (host-based authentication) 文件 。
  • MySQL 的层级关系是:实例 → 数据库 → 表 , 而 PG 的关系是:实例(也叫集群)> 数据库 > Schema > 表 。PG 多了一层,而且从行为表现上,PG 的 schema 类似于 MySQL 数据库,而 PG 的数据库类似于 MySQL 的实例 。PG 的这个额外层级在绝大多数场景是用不到的,大家从习惯上还是喜欢用数据库作为分割边界,而不是 schema 。所以往往 PG 数据库下,也就一个 public schema,这多出来的一层 schema 就是额外的负担 。
  • 因为上面机制的不同,PG 是无法直接做跨库查询的,早年要通过 dblink 插件,后来被 FDW (foreign data wrApper) 取代 。
  • PG 有更加全面的权限体系,数据库对象都有明确的所有者 , 但这也导致在做测试时,更经常碰到权限问题 。
虽然 PostgreSQL 的设计更加严谨 , 但也更容易把人劝退 。就像问卷设计的一个技巧是第一题放一个无脑就能答上来的二选一,这个的目的在于让对方开始答题 。
三、性能
最早 Google 搜索和广告业务都是跑在 MySQL 上的,我读到过当时选型的备忘 。其实一开始团队是倾向于 PG 的(我猜测是 PG 的工程质量更加符合团队的技术品味),但后来测试发现 MySQL 的性能要好不少,所以就选型了 MySQL 。
现在两者的性能对比已经完全不一样了,而且性能和业务关联性很强,取决于 SQL 复杂度,并发,延迟这些不同的组合 。目前在大部分场景下,MySQL 和 PG 的性能是相当的 。有兴趣可以阅读 Mark Callaghan (https://smalldatum.blogspot.com/) 的文章 。
为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图
四、互联网
为何在中国 MySQL 远比 PostgreSQL 流行?

文章插图
最重要的是 LAMP 技术栈,linux + Apache + MySQL + php,诞生于 1998 年,和互联网崛起同步,LAMP 技术栈的普及也带火了 MySQL 。这个技术栈的绑定是如此之深 , 所以时至今日,MySQL 官方客户端 MySQL Workbench 也还是不及 phpMyAdmin 流行 。
为何在中国 MySQL 远比 PostgreSQL 流行?


推荐阅读