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

MariaDB和MySQL的全面比较:以下是选择数据库时需要考虑的一些事项

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

MySQL 和 MariaDB 都发布了各自的用户列表。

Facebook、Github、YouTube、Twitter、PayPal、Nokia、Spotify、Netflix 等使用 MySQL。

Redhat、DBS、Suse、Ubuntu、1&1、Ingenico 等使用 MariaDB。 功能比较

有一些令人兴奋的新功能(例如窗口函数、角色 控件或通用表表达式 (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 schema,这是一组对象,可帮助数据库管理员和软件工程师更好地理解通过性能模式收集的数据。 sys 模式对象可用于优化和诊断,尽管 MariaDB 不提供此增强功能。

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

8。超级只读——MySQL通过提供超级​​只读模式来改进只读特性。如果启用read_only,服务器只允许具有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-sysbench /
  • MariaDB 10.1和MySQL 5.7在商用硬件上的性能比较:https://mariadb.org/maria-10-1-mysql-5-7-commodity-hardware/
  • MySQL 5.0.3DB 8.0.3 。 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前端网发表,如需转载,请注明页面地址。

发表评论:

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

热门