淘先锋技术网

首页 1 2 3 4 5 6 7

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也是非常简单的,具体体现在以下几个方面:

  1. 数据和表定义文件(.frm)是二进制兼容的
  2. 所有客户端API、协议和结构都是完全一致的
  3. 所有文件名、二进制、路径、端口等都是一致的
  4. 所有的MySQL连接器,比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby以及MySQL C connector等在MariaDB中都保持不变
  5. mysql-client包在MariaDB服务器中也能够正常运行
  6. 共享的客户端库与MySQL也是二进制兼容的

也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行。

2、优势
之前说,MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL,与 MySQL 相比较,MariaDB 更强的地方在于:

  1. 更优秀的存储引擎
    (Aria 存储引擎、PBXT 存储引擎、XtraDB 存储引擎、 FederatedX 存储引擎)
  2. 更快的复制查询处理
  3. 线程池
  4. 更少的警告和bug
  5. 运行速度更快
  6. 更多的 Extensions (More index parts, new startup options etc)
  7. 更好的功能测试
  8. 数据表消除
  9. 慢查询日志的扩展统计
  10. 支持对 Unicode 的排序

相对于MySQL最新的版本5.6来说,在性能、功能、管理、NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。
——详见下图 (截图自百度百科)
截图自百度百科
3、引擎
MariaDB与MySQL使用的存储引擎是不一样的,准确说默认引擎是不一样的。

  • MySQL的默认引擎是MyISAMInnoDB
    (MyISAM:MySQL 5.0 之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务)
    (InnoDB:事务型数据库的首选引擎,支持ACID事务,支持行级锁定, MySQL 5.5 起成为默认数据库引擎)
  • MariaDB的默认引擎是XtraDBAria
    (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中的默认库是一样的,也就是四个自带数据库:

  1. information_schema
  2. performance_schema
  3. mysql
  4. test

查看MariaDB中的自带库:
在这里插入图片描述
查看MySQL中的自带库:
在这里插入图片描述
两者一模一样。


因为XAMPP的数据库服务为MariaDB,但是MariaDB与MySQL的操作几乎无差别,因此以后的实验虽然使用的是MariaDB,但是依然会提示以MySQL为例。

暂时总结到此。