数据库
首页 > 数据库> > MySQL存储引擎概述(表类型)

MySQL存储引擎概述(表类型)

作者:互联网

MySQL存储引擎概述(表类型)

一、MySQL存储引擎概述

1.1 什么是存储引擎?

在讲存储引擎之前我们来做个比喻 : 现实生活中我们我们存储的数据文件有不同的类型, 每种文件类型对应各自不同的处理机制

1.2 为什么有多种存储引擎

如同上面的比喻, 虽然一个视频文件的类型不一样, 但是呈现的内容都是一样的

1.3 MySQL的工作流程

img

二、MYSQL四种主要的存储引擎

1.InnoDB

t01.frm  # 存放的是表结构
t01.idb  # 存放的是 索引 + 数据

2.MyISAM

t01.frm  # 表结构
t01.MYD  # MyDaata 存放的是数据
t01.MYI  # MyIndex 存放的是索引

3.Memory

t01.frm  # 表结构

4.Blackhole

三.MyISAM与InnoDB的区别

1.存储结构不同

2.存储空间

3.事物支持

4.外键

5.增删改查操作

6.应用

四.其他存储引擎(了解)

5.NDB 存储引擎

2003 年,MySQL AB 公司从 Sony Ericsson 公司收购了 NDB 存储引擎。 NDB 存储引擎是一个集群存储引擎,类似于 Oracle 的 RAC 集群,不过与 Oracle RAC 的 share everything 结构不同的是,其结构是 share nothing 的集群架构,因此能提供更高级别的 高可用性。NDB 存储引擎的特点是数据全部放在内存中(从 5.1 版本开始,可以将非索引数 据放在磁盘上),因此主键查找(primary key lookups)的速度极快,并且能够在线添加 NDB 数据存储节点(data node)以便线性地提高数据库性能。由此可见,NDB 存储引擎是高可用、 高性能、高可扩展性的数据库集群系统,其面向的也是 OLTP 的数据库应用类型。

6.Infobright 存储引擎

第三方的存储引擎。其特点是存储是按照列而非行的,因此非常 适合 OLAP 的数据库应用。其官方网站是 http://www.infobright.org/,上面有不少成功的数据 仓库案例可供分析。

7.NTSE 存储引擎

网易公司开发的面向其内部使用的存储引擎。目前的版本不支持事务, 但提供压缩、行级缓存等特性,不久的将来会实现面向内存的事务支持。

ps : Mysql 支持的存储引擎非常多, 上面只是常见存储引擎, 还支持自定义, 也就是自己写一个

五.不同存储引擎的使用对比

1.查看存储引擎

show engines;  # 查看安装的mysql所有支持的存储引擎
show variables like 'storage_engine%';  # 查看当前正在使用的存储引擎

image-20210130160655547

2.创建不同的表并指定不同的存储引擎

create table innodb_t01(id int) engine=innodb;        # 末尾指定InnoDB存储引擎
create table myisam_t02(id int) engine=myisam;        # 指定MyISAM存储引擎
create table memory_t03(id int) engine=memory;        # 指定memory存储引擎
create table blackhole_t04(id int) engine=blackhole;  # 指定Blackhole存储引擎

image-20210130162213876

image-20210130163155241

3.分别向四个表中插入数据

insert into innodb_t01 values(1),(2);   # 插入 ID 1 和 2 ,下同
insert into myisam_t02 values(1),(2);
insert into memory_t03 values(1),(2);
insert into blackhole_t04 values(1),(2);

image-20210130162935995

4.查看四张表的内容变化

select * from innodb_t01;
select * from myisam_t02;
select * from memory_t03;
select * from blackhole_t04;  # 注意 : 黑洞

image-20210130163832253

结论 : 对于blackhole类型的表, 往表内插入任何数据, 都相当于丢入黑洞, 表内永远不存记录

5.重启Mysqld查看memory表的变化

image-20210130164113235

image-20210130164315199

结论 : 对于memory类型的表,在重启mysql或者重启机器后,表内数据清空

标签:存储,t01,引擎,InnoDB,MyISAM,MySQL,概述,数据
来源: https://blog.csdn.net/weixin_44621343/article/details/114000682