Oracle最终会扼杀MySQL?(译)

2024-06-12 19:52

本文主要是介绍Oracle最终会扼杀MySQL?(译),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文网站:https://www.percona.com/blog/is-oracle-finally-killing-mysql/

作者:Peter Zaitsev

自从Oracle收购了MySQL后,很多人怀疑Oracle对开源MySQL的善意,这篇percona的文章深入分析了Oracle已经和将要对MySQL采取的措施,并预测了MySQL的未来。

在 15 年前,Oracle 收购了 Sun,并因此获得了 MySQL 的所有权。这导致了互联网上的很多关于 Oracle 会如何对待 MySQL 的讨论。有人认为 Oracle 会完全扼杀 MySQL,以减少对专有的 Oracle 的竞争;还有人认为 Oracle 会将 MySQL 作为开源项目扼杀,以便使收费的MySQL企业版(MySQL Enterprise)成为唯一的选择。这些谣言对于 MariaDB 和 PostgreSQL等竞争对手来说是一件好事,因此它们被广泛传播。

但实际上,Oracle最终成为MySQL的好管家。MySQL团队大部分时间都是独立工作,MySQL的老人Tomas Ulin基本上发号施令。MySQL变得更加稳定和安全,许多技术债务得到了修复,并添加了许多现代开发人员想要的功能,例如 JSON 支持和对高级 SQL 标准功能的支持。

虽然有MySQL的企业版,但它确实只专注于企业需要,而开发人员很少关心的功能,例如:可插拔身份验证、审计、防火墙等。虽然还有一个专有的GUI、监控和备份工具(例如MySQL Enterprise Monitor),但也有很多开源和专有的竞争对手,所以MySQL的企业版并没有造成很大的垄断。

在这段时间里,我经常发现自己在为Oracle辩护,许多人认为他们对MySQL很糟糕,原因很简单:因为他们就是Oracle。

我认为在这段时间里,Oracle一直在使用这个众所周知的开源成功公式:“转换永远不应该影响用户采用。”

然而,近年来,随着“MySQL Heatwave”(Oracle的MySQL云数据库)的推出,情况发生了变化。Heatwave 包含许多 MySQL Community 或 MySQL Enterprise 中没有的功能,例如加速分析查询和 Machine Learning等功能。

当涉及到“分析查询”时,这尤其成问题,因为MySQL没有并行查询的能力。在拥有数百个内核的 CPU 进入市场后,这些多内核并没有明显提高MySQL的速度。这个限制不仅表现在分析应用的查询,也适用于简单的“group by”查询。说明:MySQL 8 确实对 DDL 有一些并行化支持,但对查询没有。

这是不是为了让人们转而拥抱MySQL Heatwave?或者,干脆迁移到 PostgreSQL 或 Clickhouse?

矢量搜索是开源MySQL缺乏的另一个领域。目前其他所有主要的开源数据库都增加了对矢量搜索功能的支持,并且MariaDB正在研究它,而在MySQL生态系统中它只能在云版本MySQL Heatwave上使用。

然后也许是最奇怪的选择:只有MySQL Enterprise支持Javascript,开源MySQL的社区版上并不支持这个业界最流行的语言!我认为 MySQL 应该尽一切努力赢得 Javascript 开发人员的心,他们中的许多人已经更喜欢更简单的数据库,比如 MongoDB。

根据我的看法,所有这些特性都违背了前面提到的黄金法则,因为它们显然会降低用户对MySQL的采用率。无论从特定功能的角度来看,还是从担心这种看似政策变化对MySQL未来的影响的角度来看,这些特性都会对用户造成负面影响。

如果这还不够,MySQL似乎在性能工程部门遭受了多年的忽视,与MySQL 5.6相比,MySQL 8.0的性能显著降低(参见:结果出乎意料!MySQL和MariaDB谁快?MySQL 8.0比MySQL 5.6快吗?。您可以声称功能的增加带来性能的降低是正常现象,但MariaDB能够显著减少性能下降,PostgreSQL甚至在添加新功能的同时提高了性能。
在这里插入图片描述
我不了解 Oracle 管理团队内部的决策理由,我不能说这是无知还是恶意,但在过去几年中,这样的产品决策肯定不利于 MySQL 的被用户采用,因为 PostgreSQL 已经大步赢得了人心,并且根据 DB-Engines 的说法,已经显着缩小了与 MySQL 的被用户采用的差距。 并且已经是StackOverflow 开发者调查中最受欢迎的开源关系数据库。
无论如何,除非 Oracle 将注意力转向现代开发人员对关系数据库的需求,否则Oracle将扼杀MySQL,如果不是通过行动,那么就是通过不作为。

关于号主,姚远:

  • Oracle ACE(Oracle和MySQL数据库方向)
  • 华为云最有价值专家
  • 《MySQL 8.0运维与优化》的作者
  • 拥有 Oracle 10g、12c和19c OCM等数十项数据库认证
  • 曾任IBM公司数据库部门经理
  • 20+年DBA经验,服务2万+客户
  • 精通C和Java,发明两项计算机专利

这篇关于Oracle最终会扼杀MySQL?(译)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055178

相关文章

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分