主流的RDBMS
产品名称 | 产品类型 | 开发者 |
---|---|---|
MySQL | 开源软件 | 由瑞典MySQL AB公司开发,目前为美国Oracle公司所拥有 |
MariaDB | 开源软件 | 由Monty Widenius开发,目前为MariaDB Foundation所拥有 |
PostgreSQL | 开源软件 | 目前为PostgreSQL Global Development Group所拥有 |
Oracle | 商业软件 | 美国Oracle公司 |
MSSQL | 商业软件 | 美国Microsoft公司 |
DB2 | 商业软件 | 美国IBM公司 |
MySQL与MariaDB的关系
历史故事
随着Oracle买下Sun,MySQL也落入了关系型数据库王者之手。而早在2009年,考虑到Oracle的名声以及其入手之后闭源的可能性,MySQL之父的Michael便先行一步,以他女儿Maria的名字开始了MySQL的另外一个衍生版本:MariaDB。 Michael 的名声很好,很快追随者很快排满了八条街,主流的Linux发行商基本上都开始转而支持使用MariaDB以规避MySQL不确定性的风险以及对Michael的看好。而MariaDB则被看作MySQL的替代品,原因很简单作为MySQL之父的Michael可以引导过去开源成功的MySQL,自然在其主导下的MariaDB也自然很值得期待。左手把MySQL卖掉挣得大笔银子,右手再创分支,开启新的衣钵,这便是技术强者的快意人生,一壶浊酒喜相逢,多少IT事,都付笑谈中。
文章出处:MariaDB: 谁是更为正宗的MYSQL
作者:知行合一 止于至善
MariaDB的前世今生
年份 | 事件 |
---|---|
2009年 | Michael Widenius创建新项目Michael以规避关系型数据库开源的可能风险.直到5.5的版本,一直按照MySQL的版本进行发行。使用者基本上不会感受到和MySQL不同的地方。 |
2012年 | MariaDB开始按照自己的节奏和版本发行方式进行发行,初始版本为:10.0.0,此版本以MySQL5.5为基础,同时合并了MySQL5.6的相关功能。 |
版本迭代
历史版本
MySQL:5.1 –> 5.5 –> 5.6 –> 5.7 –> 8.0
MariaDB:5.5 –> 10.0 –> 10.1 –> 10.2 –> 10.3
当前版本
项目 | 版本号 | 说明 |
---|---|---|
最新的Stable | 10.3.7 | 企业一般不采用 |
次新的Stable | 10.2.15 | 企业的最佳选择 |
备注:数据时间截止2018年6月5日
官方技术支持
官方站点
MySQL - The world’s most popular open source database
MariaDB.org - Supporting continuity and open collaboration
官方文档
备注:以上四张截图的时间截止2018年6月5日
MariaDB两大特性
插件式存储引擎
- “存储引擎”也称为“表类型”
- 存储管理器有多种实现版本,功能和特性可能均略有差别
- (Mysql5.5.5及更高版本)默认引擎:InnoDB
- MariaDB 默认引擎:XtraDB
- XtraDB 是 Percona 开发维护的 InnoDB 威力加强版,整合 Google、Facebook 等公司和 MySQL 社区的补丁
单进程,多线程
两种存储引擎的比较
(一)MyISAM引擎
1、引擎特点
- 不支持事务
- 表级锁定
- 读写相互阻塞,写入不能读,读时不能写
- 只缓存索引
- 不支持外键约束
- 不支持聚簇索引
- 读取数据较快,占用资源较少
- 不支持MVCC(多版本并发控制机制)高并发
- 崩溃恢复性较差
- MySQL5.5.5前默认的数据库引擎
2、适用场景
- 只读(或者写较少)
- 表较小(可以接受长时间进行修复操作)
3、引擎文件
- tbl_name.frm: 表格式定义
- tbl_name.MYD: 数据文件
- tbl_name.MYI: 索引文件
(二)InnoDB引擎
1、引擎特点
- 支持事务,适合处理大量短期事务
- 行级锁
- 读写阻塞与事务隔离级别相关
- 可缓存数据和索引
- 支持聚簇索引
- 崩溃恢复性更好
- 支持MVCC高并发
- 从MySQL5.5后支持全文索引
- 从MySQL5.5.5开始为默认的数据库引擎
2、数据库文件
- 所有InnoDB表的数据和索引放置于同一个表空间中
- 表空间文件:datadir定义的目录下
- 数据文件:ibddata1, ibddata2, …
- 每个表单独使用一个表空间存储表的数据和索引
- 启用:innodb_file_per_table=ON
- 两类文件放在数据库独立目录中
- 数据文件(存储数据和索引):tb_name.ibd
- 表格式定义:tb_name.frm
管理存储引擎
1、查看mysql支持的存储引擎
# mysql客户端交互模式下执行
show engines;
2、查看当前默认的存储引擎
# mysql客户端交互模式下执行
show variables like '%storage_engine%';
3、设置默认的存储引擎
# bash终端下执行
vim /etc/my.conf
[以下为vim编辑器环境]
[mysqld]
default_storage_engine= InnoDB;
4、查看库中所有表使用的存储引擎
# mysql客户端交互模式下执行
Show table status from db_name;
5、查看库中指定表的存储引擎
# mysql客户端交互模式下执行
show table status like ‘tb_name‘;
show create table tb_name;
6、设置表的存储引擎
# mysql客户端交互模式下执行
CREATE TABLE tb_name(... ) ENGINE=InnoDB;
ALTER TABLE tb_name ENGINE=InnoDB;
MySQL中的系统数据库
mysql数据库
- 是mysql的核心数据库
- 类似于sql server中的master库
- 主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息
PERFORMANCE_SCHEMA数据库
- MySQL 5.5开始新增的数据库
- 主要用于收集数据库服务器性能参数
- 库里表的存储引擎均为PERFORMANCE_SCHEMA
- 用户不能创建存储引擎为PERFORMANCE_SCHEMA的表
information_schema数据库
- MySQL 5.0之后产生的
- 一个虚拟数据库,物理上并不存在
- information_schema数据库类似与“数据字典”,提供了访问数据库元数据的方式,即数据的数据
- 比如数据库名或表名,列类型,访问权限(更加细化的访问方式)
MySQL架构图
文章归类:[II. Services] 第5章 MySQL
文章标题:[II. Services] 5.2 初识MySQL和MariaDB
作者:林永峰
撰写日期:2018年6月5日
遵循的开源协议:GPL
-EOF-