1.1 MariaDB的介绍
MariaDB是MySQL源代码的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB是完全兼容MySQL的,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB, XtraDB完全兼容InnoDB。创建一个InnoDB表,内部默认会转换成XtraDB,如图1-1所示。
图1-1 默认XtraDB存储引擎
Percona XtraDB是InnoDB存储引擎的增强版,可用来更好地发挥最新的计算机硬件系统性能,同时还包含一些在高性能环境下的新特性。XtraDB存储引擎是完全向下兼容的,在MariaDB中,XtraDB存储引擎被标识为’'ENGINE=InnoDB'',这与InnoDB是一样的,所以可以直接用XtraDB替换掉InnoDB,而不会产生任何问题。XtraDB在InnoDB的基础上构建,使XtraDB具有更多的特性、更多的参数指标和更多的扩展。从实践的角度来看,XtraDB在CPU多核的条件下会更有效地使用内存,并且性能更高。从MariaDB 5.1开始就默认使用XtraDB存储引擎。
MariaDB由MySQL的创始人Michael (Monty) Widenius主导开发,早前他曾以10亿美元的价格将自己创建的公司MySQL AB卖给了Sun公司,此后,随着Sun公司被甲骨文公司收购,MySQL的所有权也落入Oracle公司的手中。MariaDB名称来自Michael (Monty) Widenius的女儿Maria的名字。
MariaDB 10.0和MySQL 5.6的不同之处
MySQL 5.6的代码库的文件结构已经被改动。比如单个代码文件已经被分成多个,又或者某些代码已经被重新归类到不同的文件内。所以要MariaDB去配合现在这个文件结构,一定是一个非常消耗时间的过程。
MairaDB 5.5已经有大量的代码不同于MySQL 5.5的版本,而且也有很多新的特征被整合到MariaDB 5.5中,而这些特征直到MairaDB 5.6才出现在MySQL中。所以,在比较同样功能的MySQL和MariaDB的版本,同时在完成设计和QA方面的审核后,一个很明显的结论为MariaDB是一个更好的产品。大多数情况下,当选择MariaDB的时候,人们会更多地考虑功能方面的偏好。
MariaDB不仅仅是MySQL的一个替代品。它的主要目的是创新和提高MySQL的技术,MySQL5.6不是一个合适的创新基础平台,所以MariaDB团队做了下面的事情。
❑ 引入了一些新功能(像Multi-source Replication多源复制、基于表的并行复制、Galera Cluster集群、Spider水平分片存储引擎、TokuDB存储引擎等),所以需要一个新版本。
❑ 下一个版本称为“MariaDB 5.6”是不准确的,因为它不是基于MySQL 5.6的,取而代之,MariaDB团队决定版本号调为10.0。
MariaDB和Percona有什么不同呢?Percona是仅针对InnoDB引擎做了性能上的改善(称为XtraDB),而MariaDB在集成了XtraDB存储引擎之外,还集成了更多的存储引擎,包括Aria、SphinxSE、TokuDB、Cassandra、CONNECT、SEQUENCE及Spider存储引擎等,并且在服务器层上做了大量改进,增加了多源复制和基于表的并行复制等。