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]> show engines;
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| CSV | YES | Stores tables as CSV files | NO | NO | NO |
| MRG_MyISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| Aria | YES | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO | NO | NO |
| MyISAM | YES | Non-transactional engine with good performance and small data footprint | NO | NO | NO |
| SEQUENCE | YES | Generated tables filled with sequential values | YES | NO | YES |
| InnoDB | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.011 sec)
查看MySQL的存储引擎:
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MyISAM | DEFAULT | MyISAM storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
MariaDB存储引擎总结(截图自网络)
4、默认库
通过以前的文章可以发现,一些实验以及默认库说明时,均使用的MariaDB,单其实MariaDB与MySQL中的默认库是一样的,也就是四个自带数据库:
- information_schema
- performance_schema
- mysql
- test
查看MariaDB中的自带库:
查看MySQL中的自带库:
两者一模一样。
因为XAMPP的数据库服务为MariaDB,但是MariaDB与MySQL的操作几乎无差别,因此以后的实验虽然使用的是MariaDB,但是依然会提示以MySQL为例。
暂时总结到此。