Code前端首页关于Code前端联系我们

比较 MySQL 和 MariaDB 的异同以进行数据库选择决策

terry 2年前 (2023-09-26) 阅读数 83 #数据库
比较 MySQL 和 MariaDB 之间的主要异同。我们从性能、安全性和关键功能方面对这两个数据库进行了比较,并概述了选择数据库时需要考虑的重要方面。 谁使用 MySQL 和 MariaDB?

MySQL 和 MariaDB 都发布了相应的用户列表。

Facebook、Github、YouTube、Twitter、PayPal、诺基亚、Spotify、Netflix 等都使用 MySQL。使用。

MariaDB 支持 Redhat、DBS、Suse、Ubuntu、1&1、Ingenico 等。使用。 比较

有一些令人兴奋的新功能(例如窗口函数、角色 控件或通用表表达式 (CTE))可能值得一提,但本文仅用于比较这两个数据库,因此我们'只会显示此处的功能。我们将讨论其中一位提供的部分,以更好地帮助读者为他选择合适的数据库。

我们来看看只有一个数据库专门提供的服务:

1。 JSON 数据类型 - 从 5.7 版本开始,MySQL 支持 RFC 7159 定义的原生 JSON 数据类型,可以高效地访问 JSON 文档中的数据。

MariaDB 不提供此增强功能,因为 JSON 数据类型不是 SQL 标准的一部分。但为了支持从 MySQL 复制数据,MariaDB 为 JSON 定义了一个别名,它实际上是一个 LONGTEXT 列。 MariaDB声称两者之间没有显着的性能差异,但没有提供基准数据来支持这一说法。

值得注意的是,MySQL和MariaDB都提供了一些JSON相关的函数,以便更方便地访问、分析和检索JSON数据。

2。默认身份验证 - 在 MySQL 8.0 中,默认身份验证插件是 caching_sha2_password 而不是 mysql_native_password。此开发通过使用 SHA-256 算法提高了安全性。

3。 MySQL Shell - MySQL Shell 是 MySQL 的高级命令行客户端和代码编辑器。除了 SQL 之外,MySQL Shell 还提供 JavaScript 和 Python 脚本功能。但是,用户无法使用mysqlsh访问MariaDB服务器,因为MariaDB不支持MySQL X协议。

4。加密 - MySQL 加密重启/回滚日志(可配置),但不加密临时表空间或二进制日志。相比之下,MariaDB 支持二进制日志记录和临时表加密。

5。密钥管理 – MariaDB 提供了一个开箱即用的 AWS 密钥管理插件。 MySQL还提供了一些密钥管理扩展,但这些仅在企业版中可用。

6。 sys schema - MySQL 8.0 提供了一个系统架构,这是一组对象,可帮助数据库管理员和软件工程师更好地理解在性能模式下收集的数据。 sys 模式对象可用于优化和诊断,尽管 MariaDB 不提供此增强功能。

7。 validate_password 插件——validate_password 插件主要用于测试密码,提高安全性。 MySQL 默认启用此插件,但 MariaDB 没有。

8。超级只读—— MySQL通过提供超级​​只读模式来改进只读功能。启用只读时,服务器仅允许具有 SUPER 权限的用户执行客户端更新。如果还启用了 super_read_only,服务器将阻止具有 SUPER 权限的用户执行客户端更新。

9。不可见列 – 此功能在 MariaDB 上可用,但 MySQL 不支持。该函数允许您创建未出现在 SELECT * 语句中的列,并且在插入时,如果这些列的名称未出现在 INSERT 语句中,则无需为这些列指定值。

10。线程池 – MariaDB 支持连接线程池,这对于短查询和 CPU 密集型工作负载 (OLTP) 非常有用。 MySQL的社区版本有固定数量的线程,因此这种灵活性是有限的。 MySQL计划在企业版中添加线程池功能。 性能

近年来,针对 MySQL 和 MariaDB 引擎的性能进行了很多基准测试。我们相信,对于“MySQL 和 MariaDB 哪个更快?”这个问题没有明确的答案。这在很大程度上取决于特定用例、查询、用户数量和连接等因素。

但是,如果您真的想知道,这里是我们发现的一些最新基准测试结果。请注意,这些测试是在一组特定的数据库+引擎(例如MySQL + InnoDB)组合上执行的,因此得出的结论仅适用于该组合。

  • MySQL 8.0 (InnoDB) 和 MariaDB 10.3.7 (MyRocks) 基准比较:https://minervadb.com/index.php/2018/06/01/benchmarking-innodb-and-myrocks-performance-using /
  • MariaDB 10.1 和 MySQL 5.7 在商用硬件上的性能比较:https://mariadb.org/maria-10-1-mysql-5-7-commodity-hardware/
  • MySQL 8.0 和 3 MariaDB.10 性能比较以及 UTF8 的影响:http://dimitrik.free.fr/blog/archives/2018/04/mysql-performance-80-and-utf8-impact.html
复制

两个数据库提供其中之一数据从一台服务器复制到另一台服务器的功能。它们之间的主要区别在于,大多数 MariaDB 版本允许您从 MySQL 复制数据,这意味着您可以轻松地将 MySQL 迁移到 MariaDB。但反过来就没那么容易了,因为大多数 MySQL 版本不允许您从 MariaDB 复制数据。

还值得注意的是,MySQL GTID 与 MariaDB GTID 不同,因此当我们将数据从 MySQL 复制到 MariaDB 时,GTID 数据也会发生相应变化。

以下是两个数据库的复制配置的一些差异:

  • MySQL 默认的二进制日志格式是基于行的,而 MariaDB 默认的二进制日志格式是混合的。
  • log_bin_compress – 此配置决定二进制日志是否可以压缩。此增强功能是 MariaDB 独有的,因此 MySQL 不支持。
MySQL 和 MariaDB 之间的不兼容性

MariaDB 文档列出了 MySQL 和 MariaDB 之间的数百个不兼容性。因此,我们无法通过简单的解决方案在这两个数据库之间进行迁移。

大多数 DBA 更喜欢 MariaDB 作为 MySQL 的一个分支,因此在两者之间迁移很容易。但从最新发布的情况来看,这个想法并不现实。 MariaDB 实际上是 MySQL 的一个分支,这意味着在它们之间切换时需要考虑很多事情。 存储引擎

MariaDB 支持比 MySQL 更多类型的存储引擎。然而,数据库可以支持多少个存储引擎并不重要。重要的是哪个数据库可以支持适合您需求的存储引擎。

  • MariaDB支持的存储引擎有: 、Spider、TokuDB。
  • MySQL支持的存储引擎有:InnoDB、MyISAM、Memory、CSV、Archive、Blackhole、Merge、Federated、Example。
在 Linux 上安装

在某些 Linux 发行版上安装 MySQL 时,最后应该安装的是 MariaDB,因为它是许多(不是全部)Linux 发行版上的默认设置。

Red Hat Enterprise/CentOS/Fedora/Debian 发行版默认安装 MariaDB,而其他发行版(例如 Ubuntu)默认安装 MySQL。 云平台上的可用性

MariaDB 可作为在 Amazon Web Services (AWS)、Microsoft Azure 和 Rackspace Cloud 上运行的服务。

MySQL 可在上述三个平台上使用,并且还作为托管服务在 Google 云服务平台上运行。

因此,如果您使用 Google Cloud Platform 并希望云提供商来管理该服务,请考虑使用 MySQL,除非您想自己安装和管理 MariaDB 实例。 许可证

MariaDB 根据 GPL v2 许可证获得许可,而 MySQL 提供两种许可选项 - GPL v2(用于社区发布)和企业许可证。

两个 MySQL 许可证之间的主要区别在于可用的服务和支持服务。用户可以使用MariaDB的所有功能,但MySQL则不然。 MySQL 社区版不包含线程池等可能显着影响数据库和查询性能的功能。 发布频率和更新

一般来说,MariaDB 的发布频率比 MySQL 更高。过于频繁地发布既有优点也有缺点。从好的方面来说,用户可以更快地获得功能和错误修复。缺点是使 MariaDB 保持最新需要更多的工作。 技术支持

MySQL 支持团队,包括 MySQL 开发人员和支持工程师,为客户提供 24/7 全天候服务。 Oracle 根据客户的需求提供多种支持选项,包括扩展支持、持续支持和高级支持。 MariaDB支持团队的支持工程师包括MariaDB和MySQL数据库专家(因为许多服务最初是由MySQL团队开发的),他们为生产系统提供24/7企业级支持。 持续开发

MySQL主要由Oracle的MySQL团队开发,而MariaDB是通过公众投票和邮件列表开发的。此外,任何人都可以向 MariaDB 提交补丁,MariaDB 开发团队会将它们视为对主代码库的补充。所以,从某种程度上来说,MariaDB是由社区开发的,而MySQL主要是由Oracle开发的。 结论

好吧,我们无法为您做出决定。我们能做的就是问几个有针对性的问题,然后你自己做出决定:

  • 你是否针对这两个数据库测试了你的产品的性能?哪一个表现更好,为什么?
  • 您是否计划使用数据库专门提供的功能?
  • 您打算使用数据库提供的数据库引擎之一吗?
  • 能够影响数据库开发过程对您来说有多重要?对下一个功能更改进行投票对您来说有多重要?
  • 您想付费购买企业版还是使用社区版?社区版功能满足您的需求吗?
  • 您的操作系统是否支持您默认选择的数据库?安装需要做很多工作吗?
  • 您使用哪个云提供商?他们是否提供包含您选择的数据库的托管服务?
  • 您计划将来从一种数据库类型切换到另一种数据库类型吗?如果是这样,您是否考虑过兼容性和复制问题?

如果你能很好地回答这些问题,也许就清楚哪个数据库更适合你了。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门