MariaDB和MySQL片面对比 选用数据库须要思考这几点
这篇文章的目的关键是比拟 MySQL 和 MariaDB之间的关键相似点和不同点。咱们将从性能、安保性和关键性能方面对这两个数据库倒退对比,并列出在选用数据库时须要思考的关键事项。
谁在经常使用 MySQL 和 MariaDB?
MySQL 和 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 形式 ——MySQL 8.0 提供了 sys 形式,这是一组对象,可协助数据库治理员和软件工程师更好地理解经过 Performance形式搜集的数据。sys 形式对象可用于优化和诊断,不过 MariaDB 没有提供这个增强性能。
7. validate_password 插件 ——validate_password 插件关键用于测试明码并提高安保性。MySQL 自动启用了这个插件,而MariaDB 则不启用。
8. 超级只读 —— MySQL 经过提供超级只读(super read-only)形式来增强 read_only 性能。假设启用了read_only,主机只准许具备 SUPER 权限的用户口头客户端更新。假设同时启用了 super_read_only,那么主机将制止具备 SUPER权限的用户口头客户端更新。
9. 无法见列 ——这特性能在 MariaDB 上可用,MySQL 不支持该性能。这特性能准许创立未在 SELECT *语句中发生的列,而在启动拔出时,假设它们的名字没有出如今 INSERT 语句中,就不须要为这些列提供值。
10. 线程池 ——MariaDB 支持衔接线程池,这关于短查问和 CPU 密集型的上班负载(OLTP)来说十分有用。在 MySQL的社区版本中,线程数是固定的,因此限度了这种灵敏性。MySQL 方案在企业版中参与线程池性能。
性能
近年来,发生了很多关于 MySQL 和 MariaDB 引擎性能的基准测试。咱们不以为“MySQL 或 MariaDB哪个更快”这个疑问会有一个最终的答案,它在很大水平上取决于详细的经常使用场景、查问、用户和衔接数量等起因。
不过,假设你确实想知道,上方列出了咱们发现的一些***的基准测试结果。请留意,这些测试都是在一组特定的数据库 + 引擎(例如MySQL+InnoDB)组合上启动的,因此得出的论断只与特定的组合无关。
复制
两个数据库都提供了将数据从一个主机复制到另一个主机的性能。它们的关键区别是大少数 MariaDB 版本准许你从 MySQL复制数据,这象征着你可以轻松地将 MySQL 迁徙到 MariaDB。但反上来却没有那么容易,由于大少数 MySQL 版本都不准许从 MariaDB复制数据。
此外,值得留意的是,MySQL GTID 不同于 MariaDB GTID,所以将数据从 MySQL 复制到 MariaDB 后,GTID数据将相应地做出调整。
以下是这两个数据库在复制性能方面的一些差异:
MySQL 和 MariaDB 之间的不兼容性
MariaDB 的文档中列出了 MySQL 和 MariaDB 之间的数百个不兼容疑问。因此,咱们无法经过繁难的方案在这两个数据库之间启动迁徙。
大少数数据库治理员都宿愿 MariaDB 只是作为 MySQL 的一个branch,这样就可以轻松地在两者之间启动迁徙。但从***颁布的几个版原本看,这种想法是不事实的。MariaDB 实践上是 MySQL 的一个fork,这象征着在它们之间启动迁徙须要思考很多物品。
存储引擎
MariaDB 比 MySQL支持更多的存储引擎类型。但话说回来,数据库可以支持多少个存储引擎并不关键,关键的是哪个数据库可以支持适宜你需求的存储引擎。
在 Linux 上装置
当你在某些 Linux 发行版上装置 MySQL 时,***或者装置的是 MariaDB,由于它是很多(不是所有)Linux 发行版的自动设置。
Red Hat Enterprise/CentOS/Fedora/Debian 发行版自动会装置 MariaDB,而其余发行版(如 Ubuntu)自动装置MySQL。
云平台上的可用性
MariaDB 可作为运转在 Amazon Web Services(AWS)、微软 Azure 和 Rackspace Cloud 上的服务。
MySQL 在上方提到的三个平台上也是可用的,同时还可以作为托管服务在谷歌云服务平台上运转。
因此,假设你正在经常使用谷歌云平台,并宿愿云提供商为你治理服务,那么可以思考经常使用 MySQL,除非你宿愿自己装置和治理 MariaDB 实例。
容许
MariaDB 驳回了 GPL v2 容许,而 MySQL 提供了两个容许选项——GPL v2(用于社区版)和企业容许。
MySQL 的两个容许之间的关键区别在于可用的性能和支持服务。用户可以经常使用 MariaDB 的一切性能,但关于 MySQL 来说并非如此。MySQL的社区版不蕴含线程池等性能,而这些性能会对数据库和查问性能发生严重影响。
颁布频率和更新
通常,MariaDB 的颁布频率比 MySQL更频繁。太高的颁布频率既无利也有弊。从好的方面来说,用户可以更及时地收到性能和失误修复。从不好的方面来说,为了让 MariaDB坚持***的形态,须要更多的上班量。
技术支持
MySQL 的支持团队(包括 MySQL开发人员和支持工程师)为客户提供全天候服务。甲骨文提供了多种支持选项,包括裁减支持、继续支持和初级支持,详细取决于客户的要求。MariaDB支持团队的支持工程师包括了 MariaDB 和 MySQL 数据库专家(由于很多性能最后是由 MySQL团队开发的),他们为消费系统提供全天候的企业级支持。
正在启动中的开发
MySQL 的开发者关键是甲骨文的 MySQL 团队,而 MariaDB 开发经过地下投票和邮件列表讨论的形式启动。此外,任何人都可以向 MariaDB提交补丁,MariaDB 开发团队会思考将这些补丁参与到主代码库中。因此,从某种水平上说,MariaDB 是由社区开发的,而 MySQL关键由甲骨文开发。
论断
好吧,咱们无法为你做出选择。咱们能做的就是有针对性地问你一些疑问,而后你自己做出选择: