MariaDB 10.0.1 包含哪些内容 – 现已可用
首先,恭喜 Oracle 发布了 MySQL 5.6 GA 版本!干得好!
在这篇文章中,我将详细介绍 MariaDB 10.0 前两个 alpha 版本的功能。第一个版本 10.0.0-alpha 已于 11 月发布,而 10.0.1-alpha 则于昨天发布。我将把这些功能归入以下类别进行介绍:
- 仅限 MariaDB 10.0 的功能 (MySQL 5.6 中没有的功能)
- MariaDB 10.0 合并的功能 (从 MySQL 5.6 合并的功能)
- MariaDB 10.0 重新实现的功能 (在 MySQL 5.6 功能基础上重新实现的功能)
- MariaDB 5.x 中现已包含在 MySQL 5.6 中的功能 (在早期 MariaDB 版本中引入、现在已引入 MySQL 5.6 的功能)
- MariaDB 5.x 从 MySQL 5.6 反向移植的功能 (在早期 MariaDB 版本中引入、从 MySQL 5.6 开发版本反向移植的功能)
其中一些功能将链接到 MySQL 手册,以查阅 Oracle 提供的关于该功能的文档。
仅限 MariaDB 10.0 的功能
本节中的功能是 MariaDB 10.0 所独有的,在 MySQL 5.6 中找不到。
自 10.0.0 版本起可用
- 多源复制 (MDEV-253)
- 多源复制是许多用户长期以来期望的功能。在您将数据划分到多个主服务器的场景中,您可以将所有主服务器的数据复制到一个从服务器上。典型用例如下:
- 将分散在多个主服务器上的数据汇集到一个从服务器上进行分析查询
- 多个主服务器可以复制到同一个从服务器上,并在该从服务器上进行完整备份
- 较新的硬件通常提供更好的性能。通常情况下,并非所有硬件都会同时升级,多源复制可用于将多个主服务器复制到一个强大的新从服务器上。
- 原始代码来自 淘宝
- 多源复制是许多用户长期以来期望的功能。在您将数据划分到多个主服务器的场景中,您可以将所有主服务器的数据复制到一个从服务器上。典型用例如下:
- 更快的组提交
- 组提交功能得到了进一步增强。开发人员 Kristian Nielsen 关于这些改进的两篇博文可在此处找到: 这里。
- SHOW EXPLAIN
- 获取正在运行语句的查询计划。
现已在 10.0.1 中可用
- Cassandra 存储引擎
- 集成了 NoSQL 数据库 Apache Cassandra。Cassandra 被视为 MariaDB 的存储引擎。此集成实现了:
- 合并来自 Cassandra 和 MariaDB 的数据
- 从 MariaDB 读取和写入 Cassandra。SQL 的 SELECT、INSERT、UPDATE 和 DELETE 命令都可用。
- 集成了 NoSQL 数据库 Apache Cassandra。Cassandra 被视为 MariaDB 的存储引擎。此集成实现了:
- 引擎无关统计信息
- 优化器统计信息是描述数据库及其对象更多细节的数据集合。
- 统计信息现在独立于存储引擎提供。以前,统计信息由存储引擎本身提供,且统计信息的质量通常很差。此外,由于以前是通过存储引擎接口提供的,它们受到很多限制。
- 这些统计信息被查询优化器用来为每个 SQL 语句选择最佳执行计划。更好的统计信息会带来更好的执行计划,用户通常会体验到更快的查询结果。
- 现在也为非索引列收集统计信息。例如,之前 InnoDB 的统计信息只针对索引。
- 改进的 动态列
- 动态列功能已在 MariaDB 中存在一段时间了。此功能允许您为表中的每一行存储一组不同的列。因此,动态列可以称为类 NoSQL 功能。
- 自 MariaDB 引入动态列以来,一直有用户反馈和研究致力于进一步改进它。动态列拥有一些新功能,现已集成到 MariaDB 主线版本中:
- 数据库互操作性:公司只使用单一类型数据库的情况很少见,即使是关键业务系统通常也构建在多种不同类型的数据库之上。通常,来自这些不同数据库的数据会在上层应用程序级别进行合并。MariaDB 引入了在 MariaDB 数据库内部低级别执行此操作的可能性。第一个实现是与 Cassandra 的集成。通过动态列和 Cassandra 存储引擎,您现在可以将存储在 Cassandra 中的数据与 MariaDB 中的数据结合起来,并且这是通过 MariaDB 侧的常规查询来实现的。
- 数据交换:JSON 已成为非常流行的数据交换标准。现在在动态列中,可以请求 JSON 格式的行。
- 按线程内存使用量 (MDEV-4011)
- 基于淘宝的补丁,INFORMATION_SCHEMA 和 SHOW STATUS 支持分析特定线程的内存使用量
- 使用唯一键的 ALTER TABLE 更快 (MDEV-539)
- 显著加快带有唯一键的 ALTER TABLE 操作速度(适用于 Aria 和 MyISAM 存储引擎)
MariaDB 10.0 合并的功能
本类别中列出的功能直接从 MySQL 5.6 合并而来。
自 MariaDB 10.0.0 版本起已可用
- InnoDB 和 Performance Schema
- 大部分 InnoDB 增强功能已包含在内,但有些功能,例如 InnoDB 的全文检索能力,将在 10.0 的后续版本中加入。
MySQL 手册:InnoDB。 - 全新的 Performance Schema,包含所有新的事件过滤、插桩以及其他优秀特性。
MySQL 手册:Performance Schema
- 大部分 InnoDB 增强功能已包含在内,但有些功能,例如 InnoDB 的全文检索能力,将在 10.0 的后续版本中加入。
- ORDER BY … LIMIT -优化
- 这是一项有用的优化,用于仅显示大型结果集中的少量行。
MySQL 手册:Limit 优化
- 这是一项有用的优化,用于仅显示大型结果集中的少量行。
现已在 10.0.1 中添加
- Plugin-load-add (MDEV-3860)
- 用于避免在单个长参数中指定大量的插件
MariaDB 10.0 重新实现的功能
这些功能是对 MySQL 5.6 中相应功能的重新实现。在未来的 MariaDB 10.0 版本中,这个类别还会增加一些功能。我会在未来的博文中介绍它们。
在 10.0.1 中
- 增加对自动初始化/更新的 timestamp 和 datetime 的全面支持
MariaDB 5.x 中现已包含在 MySQL 5.6 中的功能
早期 MariaDB 5.x 版本包含的功能现已引入 MySQL 5.6。值得注意的是,MySQL 5.6 中对应的功能并非从 MariaDB 合并而来。Oracle 已经重新实现了它们。
- 许多优化器增强功能,这些功能自 MariaDB 5.3 和 5.5 版本以来就已存在。
- 查看优化器功能对比矩阵以获取完整列表和对比信息。
- 微秒,自 MariaDB 5.3 起
- Binlog 注解,自 MariaDB 5.3 起
- Binlog 组提交,自 MariaDB 5.3 起
- 精确 GIS 功能,自 MariaDB 5.3 起
- 线程池,自 MariaDB 5.5 起
MariaDB 5.x 从 MySQL 5.6 反向移植的功能
这些功能从 MySQL 5.6 的开发分支合并到 MariaDB,并在 MariaDB 中进行了生产环境的强化。
- Binlog 校验和,在 MariaDB 5.3 中引入。它是 MySQL 5.6 中相应功能的反向移植。
如上所述,MariaDB 10.0 已包含相当多的功能,但未来还将有更多功能加入。敬请关注关于 MariaDB 10.0.2 中将包含功能的更新。
对于我们这些技术人员/DBA 来说,这是一篇很棒的文章。我真正希望看到的是一份两部分列表,简要列出:“MariaDB 目前拥有的、MySQL 目前没有的功能。”和“MySQL 目前拥有的、MariaDB 目前没有的功能。”这样我可以展示给我的系统管理员或其他只想了解两者区别而不希望信息过载的人。我经常发现我不得不解释“有什么不同”,因为像这篇博文或页面(例如:https://kb.askmonty.org/en/mariadb-versus-mysql-features/)信息量太大,过于详细。
好建议,Brandon!非常有道理。我会将其作为未来博文/文章的主题。谢谢!
SkySQL 的 Max 今天正好写了一篇关于这个的博文;一篇关于 MariaDB 10.0 和 MySQL 5.6 之间功能对比的文章。请看这里:
http://www.skysql.com/blogs/max-mether/mysql-56-vs-mariadb-100
SkySQL 的 Max 今天正好写了一篇关于这个的博文;一篇关于 MariaDB 10.0 和 MySQL 5.6 之间功能对比的文章。请看这里:
http://www.skysql.com/blogs/max-mether/mysql-56-vs-mariadb-100