MariaDB简述
1、总述:
MariaDB是MySQL数据库的一个分支,使用方法几乎与MySQL完全一致,包括命令、界面、使用等,根据官方介绍,在MariaDB 5.5版本之前,所欲的功能特性完全继承自MySQL,因此使用MariaDB 5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。
但是从2012年11月12日起发布的10.0.0版开始,MariaDB不再依照MySQL的版号,而是10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和自行开发的新功能。
正因为是MySQL的一个分支和衍生版,因此各种特性与MySQL基本一致,所以用户在使用MariaDB时,几乎感觉不到其与MySQL的差异,这也是开发者开发MariaDB的初衷,那就是完全兼容并替代MySQL,包括API和命令行。
例如在集成平台XAMPP中,虽然数据库服务标为MySQL:
其实,真正的数据库服务不是MySQL,而是早已换成了MariaDB:
下面我们说一下为什么会出现MariaDB。
2、来源:
创建MariaDB数据库服务的原因之一,是因为MySQL的创始人Michael Widenius早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,之后SUN又被甲骨文公司(Oracle)收购,MySQL的所有权也落入Oracle的手中。
被甲骨文公司收购后,MySQL的开发者担心甲骨文公司会有将MySQL闭源的风险,所以创建了MySQL的一个分支,也就是免费开源的MariaDB数据库服务,完全兼容MySQL。MariaDB名称来自Michael Widenius的女儿Maria的名字。
虽然是分支,但是MariaDB在某些方面的性能强于MySQL,例如在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。
当MariaDB被开发后,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营,MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。
MariaDB与MySQL
既然MariaDB来自MySQL且几乎是复制产品,那么他们的关系不可不说。
1、兼容
MariaDB是MySQL的衍生数据库且完全兼容MySQL,而且从MySQL迁移到MariaDB也是非常简单的,具体体现在以下几个方面:
- 数据和表定义文件(.frm)是二进制兼容的
- 所有客户端API、协议和结构都是完全一致的
- 所有文件名、二进制、路径、端口等都是一致的
- 所有的MySQL连接器,比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby以及MySQL C connector等在MariaDB中都保持不变
- mysql-client包在MariaDB服务器中也能够正常运行
- 共享的客户端库与MySQL也是二进制兼容的
也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行。
2、优势
之前说,MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL,与 MySQL 相比较,MariaDB 更强的地方在于:
- 更优秀的存储引擎
(Aria 存储引擎、PBXT 存储引擎、XtraDB 存储引擎、 FederatedX 存储引擎) - 更快的复制查询处理
- 线程池
- 更少的警告和bug
- 运行速度更快
- 更多的 Extensions (More index parts, new startup options etc)
- 更好的功能测试
- 数据表消除
- 慢查询日志的扩展统计
- 支持对 Unicode 的排序
相对于MySQL最新的版本5.6来说,在性能、功能、管理、NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。
——详见下图 (截图自百度百科):
3、引擎
MariaDB与MySQL使用的存储引擎是不一样的,准确说默认引擎是不一样的。
- MySQL的默认引擎是MyISAM和InnoDB
(MyISAM:MySQL 5.0 之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务)
(InnoDB:事务型数据库的首选引擎,支持ACID事务,支持行级锁定, MySQL 5.5 起成为默认数据库引擎) - MariaDB的默认引擎是XtraDB和Aria
(XtraDB:替换 InnoDB,是 Percona 开发维护的 InnoDB 威力加强版,整合Google、Facebook 等公司和 MySQL 社区的补丁)
(Aria:原名Maria,是基于事物的引擎,替代MyISAM)
使用 show engines;
查看数据库引擎。
查看MariaDB的存储引擎:
MariaDB [mysql]> sho