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

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

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

默认身份认证——在 MySQL 8.0 中,默认的身份认证插件是 caching_sha2_password,而不是 mysql_native_password。这一增强通过使用 SHA-256 算法提高了安全性。

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

加密——MySQL 对重做 / 撤消日志进行了加密(可配),但不加密临时表空间或二进制日志。相反,MariaDB 支持二进制日志和临时表加密。

密钥管理——MariaDB 提供开箱即用的 AWS 密钥管理插件。MySQL 也提供了一些用于密钥管理的插件,但它们仅在企业版中可用。

sys 模式——MySQL 8.0 提供了 sys 模式,这是一组对象,可帮助数据库管理员和软件工程师更好地理解通过 Performance 模式收集的数据。sys 模式对象可用于优化和诊断,不过 MariaDB 没有提供这个增强功能。

validate_password 插件——validate_password 插件主要用于测试密码并提高安全性。MySQL 默认启用了这个插件,而 MariaDB 则不启用。

超级只读—— MySQL 通过提供超级只读(super read-only)模式来增强 read_only 功能。如果启用了 read_only,服务器只允许具有 SUPER 权限的用户执行客户端更新。如果同时启用了 super_read_only,那么服务器将禁止具有 SUPER 权限的用户执行客户端更新。

不可见列——这个功能在 MariaDB 上可用,MySQL 不支持该功能。这个功能允许创建未在 SELECT * 语句中出现的列,而在进行插入时,如果它们的名字没有出现在 INSERT 语句中,就不需要为这些列提供值。

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

复制

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

此外,值得注意的是,MySQL GTID 不同于 MariaDB GTID,所以将数据从 MySQL 复制到 MariaDB 后,GTID 数据将相应地做出调整。

以下是这两个数据库在复制配置方面的一些差别:

MySQL 的默认二进制日志格式是基于行的,而在 MariaDB 中,默认的二进制日志格式是混合式的。

log_bin_compress——这个配置决定了是否可以压缩二进制日志。这个增强功能是 MariaDB 独有的,因此 MySQL 不支持。