起因
大约15年前,Oracle收购了Sun公司,从而也拥有了MySQL,互联网上关于Oracle何时会“扼杀MySQL”的讨论此起彼伏。
当时流传着各种理论:从彻底扼杀 MySQL 以减少对 Oracle 专有数据库的竞争,到干掉 MySQL 开源项目,只留下 “MySQL企业版” 作为唯一选择。这些谣言的传播对 MariaDB,PostgreSQL 以及其他小众竞争者来说都是好生意,因此这些谣言在当时传播得非常广泛。
然而实际上,Oracle 最终把 MySQL 管理得还不错。MySQL 团队基本都保留下来了,由 MySQL 老司机 Tomas Ulin 掌舵。MySQL 也变得更稳定、更安全。许多技术债务也解决了,许多现代开发者想要的功能也有了,例如 JSON支持和高级 SQL 标准功能的支持。
虽然有 “MySQL企业版”它实际上关注的是开发者不太在乎的企业需求:如可插拔认证、审计、防火墙等。虽然也有专有的 GUI 图形界面、监控与备份工具(例如 MySQL 企业监控),但同样有许多开源和商业软件竞争者,因此并没有产生特别大的供应商锁定效应。
在这段时间里,我也常为 Oracle 辩护,因为许多人都觉得 MySQL 会遭受虐待,就因为 —— 它是Oracle。
我认为在那段期间,Oracle 一致遵守了这个众所周知的开源成功的黄金定律:“转换永远不应该妨碍采用。”
注:“Conversion should never compromise Adoption” 这句话指在开发或改进开源软件时,转换或升级过程中的任何变动都不应妨碍现有用户的使用习惯或新用户的加入。
近年变化
然而近些年来,随着 Oracle 推出了 “MySQL Heatwave”(一种 MySQL 云数据库服务),事情开始起变化了。
MySQL Heatwave 引入了许多 MySQL 社区版或企业版中没有的功能,例如加速分析查询与机器学习。
在“分析查询”上,MySQL 的问题相当严重,到现在甚至都不支持并行查询。市场上新出来的 CPU 核数越来越多,都到几百个了,但单核性能并没有显著增长,而这严重制约了 MySQL 的分析性能提升 —— 不仅仅是分析应用的查询受限,像日常应用里简单的 GROUP BY 查询也会受影响。(备注:MySQL 8 对 DDL 有一些 并行支持,但查询没有这种支持)
这么搞的原因,是不是希望用户能够有更多理由去买 MySQL Heatwave?但或者,人们其实也可以直接选择用分析能力更强的 PostgreSQL 和 ClickHouse。
另一个开源 MySQL 极为拉垮的领域是 向量检索
其他主流开源数据库都已经添加了向量检索功能,MariaDB 也正在努力实现这个功能,但就目前而言,MySQL 生态里只有云上限定的 MySQL Heatwave[5] 才有这个功能,这实在在是令人遗憾。
然后是最奇怪的决策 —— Javascript 支持是一个只在企业版中提供的功能,我认为 MySQL 应该竭尽所能地去赢得 Javascript 开发者的心,而现在很多 JS 开发者都更倾向于更简单的 MongoDB 了。
我认为上述举措都违背了前面提到的开源黄金法则 —— 因为它们显然限制了 MySQL 的采用 —— 不论是这些“XX限定”的特定功能,还是对 MySQL 未来政策变化的担忧。
如果这还不够,MySQL 的性能也出现了严重下降,似乎是因为多年来对性能工程部门的忽视[6]。与MySQL 5.6 相比,单线程简单工作负载上的性能出现了大幅下滑。你可能会说增加功能难免影响性能,但 MariaDB 的性能退化要轻微得多,而 PostgreSQL 甚至能在 新增功能的同时显著提升性能。
显然,我无法窥视甲骨文管理团队的讨论,也不能说这到底是蠢还是坏,但过去几年的这些产品决策,显然不利于MySQL的普及,特别是在同一时间,PostgreSQL 在引领用户心智上大步向前,在 DB-Engines 排名上大幅缩小了与 MySQL 的热度差距,而根据 StackOverflow开发者调查,甚至已经超过 MySQL 成为最流行的数据库了。
无论如何,除非甲骨文转变其关注点,顾及现代开发者对关系数据库的需求,否则 MySQL 将坐以待毙 —— 无论是被 Oracle 的行为杀死,还是被 Oracle 的不作为杀死。
MySQL 介绍
MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL作为网站数据库。
MySQL 特性
1.MySQL使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
2.支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
3.为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
4.支持多线程,充分利用 CPU 资源。
5.优化的 SQL查询算法,有效地提高查询速度。
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
7.提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。
8.提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
9.提供用于管理、检查、优化数据库操作的管理工具。
10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
11.支持多种存储引擎。
12.MySQL 是开源的,所以你不需要支付额外的费用。
13.MySQL 使用标准的 SQL数据语言形式。
14.MySQL 对 PHP 有很好的支持,PHP是比较流行的 Web 开发语言。
15.MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。
16.在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6新增)
17.复制全局事务标识,可支持自我修复式集群(5.6新增)
18.复制无崩溃从机,可提高可用性(5.6新增)
19.复制多线程从机,可提高性能(5.6新增)
20.3倍更快的性能(5.7 新增)
21.新的优化器(5.7新增)
22.原生JSON支持(5.7新增)
23.多源复制(5.7新增)
24.GIS的空间扩展(5.7新增)