当前位置:首页 > 数码 > PostgreSQL-在中国的优势-的因素-MySQL-超越

PostgreSQL-在中国的优势-的因素-MySQL-超越

admin1个月前 (04-19)数码9
在中国的优势

在全球范围内,MySQL 一直领先于 PostgreSQL (以下简称 PG)。DB-Engines 的趋势图显示,尽管 PG 是近 10 年增长最快的数据库,但 MySQL 仍保持着优势。从 Trends 过去一年的对比来看,MySQL 也依然明显领先。

进一步查看地域分布,绝大多数地区依然是 MySQL 领先,份额对比在 60:40~70:30 之间;少数几个国家如俄罗斯不分伯仲;印度的对比是 85:15;而中国则是达到了 96:4,也是 Google Trends 上差异最明显的国家。

原因分析

笔者从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 的原因。

1. 历史优势

MySQL 在 1998 年就提供了 Windows 版本,而 PostgreSQL 则到了 2005 年才正式推出。之前读到的原因是 Windows 早期的版本一直无法很好支持 PostgreSQL 的进程模型。

2. 上手简单

MySQL 上手更简单,举几个例子:

  1. MySQL 的安装和配置更简单。
  2. MySQL 的 SQL 语法更简洁,更容易理解。
  3. MySQL 有丰富的第三方工具支持,如 phpMyAdmin。

3. 性能优势

最早 Google 搜索和广告业务都是跑在 MySQL 上的,我读到过当时选型的备忘。其实一开始团队是倾向于 PG 的(我猜测是 PG 的工程质量更加符合团队的技术品味),但后来测试发现 MySQL 的性能要好不少,所以就选型了 MySQL。

现在两者的性能对比已经完全不一样了,而且性能和业务关联性很强,取决于 SQL 复杂度、并发、延迟这些不同的组合。目前在大部分场景下,MySQL 和 PG 的性能是相当的。有兴趣可以阅读 Mark Callaghan (的文章。

4. 技术栈优势

互联网最重要的是 LAMP 技术栈,++MySQL+,诞生于 1998 年,和互联网崛起同步,LAMP 技术栈的普及也带火了 MySQL。这个技术栈的绑定是如此之深,所以时至今日,MySQL 官方客户端 MySQL Workbench 也还是不及 phpMyAdmin 流行。

5. 大厂的号召力

前面提到的 Mark Callaghan 一开始在 Google 的 MySQL 团队,他们给生态做了很多贡献,后来 Google 内部开始用 Spanner 替换 MySQL,Mark 他们就跑到了 Facebook 继续做,又进一步发展了 MySQL 的生态,像当时互联网公司都需要的高可用方案 MHA (Master High Availability) 就是 Mark 在 FB 时期打磨成熟的。

当时整个互联网技术以 Google 为瞻,传播链差不多是 Google>Facebook/>国内互联网大厂>其他中小厂。MySQL 在互联网公司的垄断就这样形成了。相对的,那段时间 PG 有影响力的文章不多,我唯一有印象的是 Instagram 分享他们 sharding 的方案,提到用的是 PostgreSQL (。

6. 生态优势

有了大量使用后,自然就有人去解决碰到的各种问题。先是 InnoDB 横空出世,解决了事务和性能问题。主从、中间件分库分表方案解决了海量服务的扩展和高可用问题。各种 MySQL 相关书籍、培训资料也冒了出来,应该不少人都读过《高性能 MySQL》这本书。

总结

以上是我对 MySQL 在中国流行度遥遥领先于 PG 的原因的分析。当然,这只是我的个人观点,欢迎大家留言讨论。


为什么 PostgreSQL 没有 MySQL 流行

跟mysql的历史有关系,mysql在2008年卖给了sun公司,并一直可以免费的供大家伙使用。 但是10年sun被oracle收购,oracle是一个以出售数据库起家的公司,收购sun后,虽然一直支持mysql的免费策略。 但是保不齐那天就不免费了。 PostgreSQL数据库没有太多版本的选择,并且这个数据库的最优势产品时对事务的支持。 可能市面上的大多数软件对事务的要求没那么强烈。 导致mysql使用人员更多。 PostgreSQL数据库是mysql被oralce收购后逐渐流行起来的开源数据库。 虽然他的历史比mysql更悠久。 但是现在大多数公司使用开源项目的做的软件产品。 培养了大量的使用mysql熟悉的程序员。 也就导致了现在还是会有大量的mysql使用者。 公司在做产品时肯定会考虑到自己公司对数据库产品的熟悉程度来决定使用什么样的数据库。 但是现在PostgreSQL已经开始慢慢的要苏醒了。

为什么 PostgreSQL 没有 MySQL 流行

1、MySQL崛起那会,PG虽然已经有许多高级特性,但那些特性互联网用不着,互联网需要的特性——快速——那时的PG不具备。 历史延续下来,造成了今天的局面。 可以说互联网成就了MySQL.2、MySQL的主从复制、增量备份比PG设置简单(知道PG的增量备份多耗磁盘不!),这些特性在互联网是很有用的。 而旧的pg vacuum不如今天的友好。 这些都限制了他在早期的崛起。 3、不认为商业支持是主要原因——有几个用MySQL的是买了商业支持的?倒是有些心理上的影响。 4、今天两者性能、特性上相差不多,而我认为pg略胜一筹,但大局在适时间内难改变——习惯造成的。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: MySQL

“PostgreSQL-在中国的优势-的因素-MySQL-超越” 的相关文章

MySQL-一探究竟-核心模块揭秘 (mysql-bin文件可以删除吗)

MySQL-一探究竟-核心模块揭秘 (mysql-bin文件可以删除吗)

Undo Segment Caching To improve the efficiency of undo segmentallocation, InnoDB caches some un...

优化数据统计的终极指南-MySQL-提升查询性能的秘诀 (优化数据统计工具)

优化数据统计的终极指南-MySQL-提升查询性能的秘诀 (优化数据统计工具)

在业务场景中,我们经常需要统计当前已有的业务数据,例如商品库内商品的数量、每天的用户订单数量等。此时,我们需要使用统计功能来实现。 count()实现方式 对于不同的数据库引擎,co...

实战-MySQL-数据库压力测试与性能评估方法-Java (实战篮球鞋排名)

实战-MySQL-数据库压力测试与性能评估方法-Java (实战篮球鞋排名)

压力测试的目的和重要性 压力测试是模拟真实环境中并发用户访问数据库的场景,通过增加负载来测试数据库系统的性能表现。压力测试的目的是发现数据库在高负载下的性能瓶颈、资源利用情况和响应时间等指...

如何在MySQL中成功数据的版本治理和回滚操作 (如何在mysql数据库中添加数据)

如何在MySQL中成功数据的版本治理和回滚操作 (如何在mysql数据库中添加数据)

成功数据的版本治理和回滚操作在中可以经过以下几种模式成功,包含经常使用事务、备份恢复、日志和版本控制工具等。上方将详细引见这些方法。 1.经常使用事务: MySQL允许事务操作,可以经...

核心模块-深入探索数据库引擎-MySQL-揭秘 (核心模块英文)

核心模块-深入探索数据库引擎-MySQL-揭秘 (核心模块英文)

简介 Savepoint 是 MySQL 中的一种机制,允许在事务中创建标记点,以便在事务失败时回滚到该标记点。Savepoint 的原理是将事务的当前状态存储在各种数据结构中,包括服务器层、b...

使用-数据库并自动发送备份文件到指定邮箱-K8s-定期备份-MySQL (使用数据库的命令)

使用-数据库并自动发送备份文件到指定邮箱-K8s-定期备份-MySQL (使用数据库的命令)

简介 本文档描述了一个使用脚本来监控服务器高占用率进程并通过电子邮件发送警报的项目。本文还探讨了使用相同机制备份数据库的可能性。 技术 Python psuti...

обеспечение-и-данных-MySQL锁机制-предотвращение-конфликтов-согласованности (翻译)

обеспечение-и-данных-MySQL锁机制-предотвращение-конфликтов-согласованности (翻译)

锁机制是一种通过对数据进行加锁来防止数据冲突和不一致的技术。MySQL 采用了两种类型的锁:共享锁和排他锁,以实现并发访问数据的同时保证数据的一致性。 共享锁 (SharedLock)...

EXPLAIN-代价模型-MySQL-浅析-提早预知索引优化战略-优化查问性能-告别自觉经常使用 (explain)

EXPLAIN-代价模型-MySQL-浅析-提早预知索引优化战略-优化查问性能-告别自觉经常使用 (explain)

背景 在中,当咱们为表创立了一个或多个索引后,通常须要在索引定义成功后,依据详细的数据状况口头EXPLN命令,才干观察到数据库实践经常使用哪个索引、能否经常使用索引。这使得咱们在参与新索引之...