初识MySQL和MariaDB


主流的RDBMS

产品名称 产品类型 开发者
MySQL 开源软件 由瑞典MySQL AB公司开发,目前为美国Oracle公司所拥有
MariaDB 开源软件 由Monty Widenius开发,目前为MariaDB Foundation所拥有
PostgreSQL 开源软件 目前为PostgreSQL Global Development Group所拥有
Oracle 商业软件 美国Oracle公司
MSSQL 商业软件 美国Microsoft公司
DB2 商业软件 美国IBM公司

MySQL与MariaDB的关系

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

MySQL官方站点

MariaDB.org - Supporting continuity and open collaboration

MariaDB官方站点

官方文档

MySQL :: MySQL Documentation

MySQL官方文档

MariaDB Knowledge Base

MariaDB官方文档

备注:以上四张截图的时间截止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架构图

MySQL架构图

猜你喜欢

转载自blog.csdn.net/linyonfeng/article/details/81239397