MariaDB 和 MySQL 之间有何区别?
MySQL 和 MariaDB 都是开源数据库技术。您可以使用它们以包含行和列的表格格式存储数据。MySQL 是最广泛采用的开源数据库。它是许多热门网站、应用程序和商业产品的主要关系数据库。MariaDB 是 MySQL 的修改版本。在 MySQL 被 Oracle 公司收购后,出于许可和分发方面的问题,MySQL 的原始开发团队制作了 MariaDB。自收购以来,MySQL 和 MariaDB 经历了不同的发展。但是,MariaDB 采用 MySQL 的数据和表定义文件,还使用相同的客户端协议、客户端 API、端口和套接字。这是为了让 MySQL 用户能够轻松切换到 MariaDB。
MariaDB 和 MySQL 有什么相似之处?
MySQL 是 1995 年发布的关系数据库管理系统。2009 年,开发人员发布了 MariaDB,作为 MySQL 5.1.38 的代码分支。
由于 MariaDB 是 MySQL 的分支,因此这两个关系数据库管理系统有许多相似之处。例如,MariaDB 保留了 MySQL 的结构、命名约定和数据定义文件。此外,它还支持所有 MySQL 连接器、连接和端口。您的 MySQL 客户端包在 MariaDB 中可以正常工作。
接下来,我们再介绍一些两者的相似之处。
ACID 合规性
原子性、一致性、隔离性和持久性 (ACID) 是确保数据库事务可靠性的四个核心原则。MySQL 和 MariaDB 都遵循这些原则。这两种数据库都通过遵循 ACID 来保持数据的准确性和完整性。
SQL 兼容性
MySQL 和 MariaDB 都是将数据整理到表中的关系数据库。MariaDB 和 MySQL 都使用 SQL 来管理和查询数据。您可以在这些系统之中使用许多相同的命令。
开源软件
作为开源关系数据库管理系统,MySQL 和 MariaDB 都是开发人员社区共同努力的结果。两者的源代码都向公众公开。
MySQL 数据库有一个完全开源的版本,根据通用公共许可证 (GPL) 发布。它还具有一个付费的企业版本,该版本带有附加功能和支持。MariaDB 在 GitHub 上是完全开源的。
安全性
MySQL 和 MariaDB 提供类似的基本安全功能。它们提供加密功能、访问控制机制、用户身份验证和授权功能以及 SSL/TLS 支持。它们还允许进行精细的访问控制,让您可以为不同的用户提供不同的权限级别。
主要区别:MariaDB 与MySQL
MariaDB 从 MySQL 分支出来以后,一直在不断扩展其功能。其中一些变化导致了核心功能、能力和性能的差异。
以下是 MySQL 和 MariaDB 之间的显著区别。
JSON 数据处理
MariaDB 和 MySQL 支持检索和存储 JSON 数据。但是,它们以不同的方式存储 JSON 报告。MariaDB 将 JSON 报告存储在字符串中,而 MySQL 则将它们存储为二进制对象。
MySQL 和 MariaDB 也不都支持所有 JSON 函数。MariaDB 支持 JSON_QUERY 和 JSON_EXISTS,而 MySQL 则不支持。同样,MySQL 支持原生 JSON 数据类型 JSON_TABLE,而 MariaDB 则不支持。
但是,从 10.2 版本起,MariaDB 仅支持 JSON 数据类型。MariaDB 使用的 JSON 数据类型是 LONGTEXT 的别名。
功能
由于 MariaDB 和 MySQL 的开发途径不同,因此两者目前提供的功能略有不同。
例如,MySQL 提供动态列,允许您在单列中定义多个数据值并使用函数修改该列。动态列允许进行数据掩码以保护敏感信息。
相反,MariaDB 则支持数据库视图中的隐形列。当用户执行 SELECT 语句或在 INSERT 语句中请求值时,不会列出隐形列。
用户身份验证
MySQL 有 validate_password 组件,可用于提高密码安全性。
默认情况下,MariaDB 不具备此功能,但提供了三个验证器插件。您可以使用这些密码验证器插件来为密码增加更多保护。在 10.4 版中,MariaDB 引入了 ed25519 身份验证插件,取代其之前使用的 SHA-1 身份验证。这有助于对用户进行身份验证并安全地存储密码。
加密
MySQL 和 MariaDB 都可以对静态和传输中的数据进行加密。
MySQL 允许管理员用户配置和加密重做和撤消日志,但不加密临时表空间或二进制日志。
与之相对的是,MariaDB 支持二进制日志加密和临时表加密。
线程池
线程池允许数据库通过将新连接与先前存在的线程配对来优化其资源。高线程池容量对于想要扩展并同时为数千名用户提供服务的应用程序至关重要。
MariaDB 在其线程池插件中包含线程池,该插件是社区版本的一部分。MariaDB 提供同时管理超过 200000 个连接的功能。
MySQL 的企业版本上有一个线程池插件。但是,它不能像 MariaDB 那样一次处理那么多的连接。
何时使用 MariaDB 与MySQL
与 MySQL 相比,MariaDB 更具可扩展性,且查询速度更快。这使其非常适合用于管理大型数据。您还将在 MariaDB 中找到更多 MySQL 不具备的功能,例如序列存储引擎和虚拟列。您还可以在一个表中使用多个引擎。
但是,MySQL 的存在时间比 MariaDB 要长得多。一些组织更偏向于 MySQL 提供的企业支持。
接下来,我们来说说在两个数据库之间进行选择时要考虑的一些因素。
存储引擎
在数据库管理系统中,存储引擎是帮助检索、更新和存储数据库中数据的组件。您要使用的存储引擎可能会影响您的决策。
在 MySQL 和 MariaDB 上都可以使用多个存储引擎,但是 MySQL 提供的选项较少。MySQL 上的一些存储引擎包括 InnoDB、CSV、Federated、MyISAM、Merge 和 Federated。
MariaDB 支持一些 MySQL 不支持的存储引擎,例如 XtraDB、Aria、InnoDB、MariaDB ColumnStore、Memory、Cassandra 和 Connect。
许可证
MariaDB 和 MySQL 都有通用公共许可证 (GPL) 版本。MariaDB 完全采用 GPL 许可,而 MySQL 则有两个可用的许可证:公共许可证和私有许可证。
私有 MySQL 企业版许可证可解锁其他功能(例如线程池),以加快查询速度。想要在不分发 GPL 源代码的情况下分发 MySQL 软件的公司可能会更喜欢 MySQL 企业版。
Oracle 数据库兼容性
Oracle 数据库兼容性是指 Oracle 数据库与使用 MariaDB 或 MySQL 数据库构建的应用程序配合使用的能力。
如果您的组织已经在使用 Oracle 数据库产品,那么您可能更喜欢 MySQL。Oracle 数据库为特定于 MySQL 的 SQL 语法提供了特定的兼容模式。但是,MySQL 不支持 PL/SQL,这是 Oracle 开发的面向应用程序的语言。
从 10.3 版本起,MariaDB 一直支持 PL/SQL。MariaDB 还提供了 Oracle 语法兼容模式,用于在不进行任何更改的情况下运行 Oracle 数据库应用程序。
速度和性能
多年来,MySQL 在多个用例中的表现一直优于 MariaDB。例如,MySQL 8.0 每秒处理的查询数可能比 MariaDB 10.3 版还要多。但是,近年来,MariaDB 做出了许多改进。
目前,MariaDB 在执行查询和复制任务方面的速度更快。对于性能关键型工作负载,您可能更愿意使用 MariaDB。
能否从 MySQL 切换到 MariaDB?
是的,您可以毫不费力地从 MySQL 迁移到 MariaDB。MariaDB 设计为可与 MySQL 向后兼容。这意味着为 MySQL 编写的应用程序和脚本应该可以与 MariaDB 一起使用,而无需进行任何重大更改。
在 MariaDB 5.5 之前,MariaDB Server 遵循 MariaDB Server 编号架构,旨在与相同主要版本的 MySQL 的直接兼容。2012 年,为了反映越来越多在 MySQL 中不可用的功能,MariaDB Server 开始采用不同的版本编号方式。MariaDB 发布了 10.0,而 MySQL 发布了 5.6。
MariaDB Server 仍然保持与 MySQL 高度兼容。支持通过就地升级从旧 MySQL 版本升级到最新的 MariaDB 版本。
从 MySQL 到 MariaDB 的切换遵循标准的安装程序。您可以运行 mysql_upgrade 工具,使用 MariaDB 等效项更新 MySQL 数据库的权限和事件表。
差异摘要:MySQL 与MariaDB
MySQL |
MariaDB |
|
JSON |
MySQL 将 JSON 报告存储为二进制对象。 |
MariaDB 将 JSON 报告存储在字符串中。MariaDB 的 JSON 数据类型是 LONGTEXT 的别名。 |
Oracle 数据库兼容性 |
MySQL 具有很高的兼容性,但不支持 PL/SQL。 |
MariaDB 具有很高的兼容性,自 10.3 版本起支持 PL/SQL。 |
速度和性能 |
在复制和查询方面,MySQL 比 MariaDB 稍慢一些。 |
在复制和查询方面,MariaDB 比 MySQL 稍快一些。 |
功能 |
MySQL 支持超级只读函数、动态列和数据掩码。 |
MariaDB 支持隐形列和临时表空间。 |
身份验证 |
MySQL 有 validate_password 组件。 |
MariaDB 有三个密码验证器组件。 |
加密 |
MySQL 数据库使用 InnoDB 和 AES 对静态数据进行加密。 |
MariaDB 支持临时日志加密和二进制日志加密。 |
存储引擎 |
MySQL 的存储引擎比 MariaDB 少。 |
MariaDB 的存储引擎比 MySQL 多,可以在一个表中使用多个引擎。 |
许可证 |
MySQL 有两个版本:MySQL 企业版和 GPL 版本。 |
MariaDB 完全采用 GPL 版本。 |
线程池 |
MySQL 企业版带有线程池。 |
MariaDB 可以同时管理超过 20 万个连接,比 MySQL 更多。 |
AWS 如何支持您的 MySQL 和 MariaDB 要求?
Amazon Relational Database Service (Amazon RDS) 是完全托管式服务的集合,可以简化在云中设置、运营和扩展数据库的过程。
从七个热门引擎中进行选择,其中两个专用于 MySQL 和 MariaDB。Amazon RDS for Maria DB 支持 MariaDB Server 版本 10.3、10.4、10.5 和 10.6。Amazon RDS for MySQL 支持 MySQL 社区版 5.7 和 8.0。
以下是您可以通过使用 Amazon RDS 获益的方式:
- 在几分钟内部署可扩展的 MariaDB 和 MySQL 云数据库,不仅成本高效,而且可以调节硬件容量
- 无需任何更改即可使用现有代码、应用程序和工具
- 访问超过 50 个 CPU、内存、文件系统和磁盘 I/O 指标,以实现高级数据库监控
- 享受增强的可用性和持久性,以实现弹性扩展,超越单个数据库实例的容量限制
立即创建账户,开始在 AWS 上使用 MySQL 和 MariaDB。