阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL常见存储引擎详解

408次阅读
没有评论

共计 3029 个字符,预计需要花费 8 分钟才能阅读完成。

通过执行 show engines 命令查看 MySQL 中支持哪些存储引擎

MySQL 常见存储引擎详解

MySQL 存储引擎属性对比

MySQL 常见存储引擎详解

设置表的存储引擎的方法 

在 my.cnf 配置文件中设置 default-storage-engine 参数表示设置默认存储引擎  
在 MySQL 的连接上设置当前连接的默认存储引擎

mysql> set default_storage_engine=innodb;

创建表的时候通过 engine= 语句指定该表的存储引擎

CREATE TABLE t1 (i INT) ENGINE = INNODB;

在表创建之后通过 alter 语句修改表的存储引擎

ALTER TABLE t1 ENGINE = csv;

Innodb 存储引擎

存储引擎 InnoDB 是目前 MySQL 版本默认的存储引擎,也是 MySQL 推荐使用的存储引擎,是集高可靠性和高性能于一身的存储引擎。

在 MySQL5.7 版本中,除非在配置文件中显视指定 default storage engine 或者创建表时显视使用 engine= 语句指定其它的存储引擎,否则默认都是 InnoDB

InnoDB 存储引擎的优势在于:

DML 语句支持事务功能,保证 ACID 特性  
行级锁的使用保证了高并发的属性  
InnoDB 对有主键的表会依据主键优化查询性能,也称聚簇索引,将所有数据存储在聚簇索引上以减少对主键查询的 IO 消耗 
为保证数据的一致性,InnoDB 还支持外键属性,确保有外键约束的表之间不会有不一致的数据  
当服务器硬件或者软件故障导致 MySQL 重启后,InnoDB 会自动识别已经在故障之前提交的数据,并回退所有故障时未提交的数据,最大限度的保护数据不会丢失(crash recovery)

InnoDB 存储引擎的属性

MySQL 常见存储引擎详解

Myisam 存储引擎

MyISAM 存储引擎是 MySQL 老版本的默认存储引擎,由于其表级锁的特性,所以限制了其在读写操作时的性能,常用在只读表上或者读操作占绝大多数的表上,比如一些 web 应用和数据仓库相关表

每个 MyISAM 表都会在磁盘上生成三个文件,表名和文件名相同但后缀不同, .frm文件存储表的结构信息, .MYD文件存储表的数据信息, .MYI文件存储表的索引信息

MySQL 常见存储引擎详解

Memory 存储引擎

Memory 存储引擎将所有数据存储在内存中以便加快对某些不重要数据的访问速度

此存储引擎的使用范围已经变小,因为 InnoDB 已经提供了数据缓存区以便对将经常访问的数据缓存在内存中

当 MySQL 重启时,Memory 表中的数据会丢失,但表结构还在 
Memory 只适用在只读表或者读操作占绝大多数的情况,因为对表的写操作也会导致表锁大大限制了并发性

Memory 表创建之后,在磁盘文件会生成一个相同表名的文件,后缀为.frm,仅存储表结构而不存储表数据

CSV 存储引擎

Csv 存储引擎下的表对应了文本文件,其中的数据用逗号隔开,csv 表可用来以 csv 格式导入和导出表

当创建一个 csv 表时,磁盘会生成三个以表名为名字的文件,.frm 存储表的结构信息而.CSV 文件用来存储以逗号隔开的数据信息,.CSM 文件用来存储表的元数据,包括表的状态和有多少行数据信息

mysql> create table t(id int not null, name char(10) not null) engine=csv;
Query OK, 0 rows affected (0.00 sec)
 
mysql> insert into t values (1,’one’),(2,’two’);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
 
mysql> select * from t;
+—-+——+
| id | name |
+—-+——+
|  1 | one  |
|  2 | two  |
+—-+——+
2 rows in set (0.00 sec)
 
mysql> system ls /usr/local/mysql/data/test
db.opt  t.CSM  t.CSV  t.frm
mysql> system cat /usr/local/mysql/data/test/t.CSV
1,”one”
2,”two”

ARCHIVE 存储引擎

Archive 存储引擎表用来存储大量未加索引的历史归档数据

archive 表会在磁盘创建两个文件,.frm 文件用来存储表结构信息,.ARZ 文件用来存储历史归档数据 
Archive 表支持 insert, replace 和 select 语句,但不支持 delete 和 update 语句

Archive 表支持行级锁 
Archive 支持 auto_incrment 列,且其列上可以包含一个索引,但在其他字段上不能创建索引

Archive 不支持对 auto_incrment 列插入一个小于当前最大值的数据 
Archive 存储引擎会用 zlib 来压缩数据

MySQL 常见存储引擎详解

Blackhole 存储引擎

Merge 存储引擎可以将一批字段相同,索引相同且顺序相同的 MyISAM 表在逻辑上看做是同一个

Merge 表在磁盘上创建两个文件,.frm 文件保存表的结构信息,.MRG 文件包含所有被视作同一个表的 MyISAM 表

Merge 表支持 select,delete,update,insert 语句执行

创建 merge 表时需要执行 union 子句,用来将指定的 MyISAM 结合起来,insert_method 选项用来指定插入语句是将数据插入到第一个表 FIRST 还是最后一个表 LAST 中,或者不指定或 NO 表不允许插入

create table t1 (a int not null auto_increment primary key, message char(20)) engine=myisam;
create table t2(a int not null auto_increment primary key , message char(20)) engine=myisam;
insert into t1 (message) values (‘testing’),(‘table’),(‘t1’);
insert into t2 (message) values (‘testing’),(‘table’),(‘t2’);
create table total(a int not null auto_increment, message char(20),index(a)) engine=merge union=(t1,t2) insert_method=last;
select * from total;
mysql> select * from total;
+—+———+
| a | message |
+—+———+
| 1 | testing |
| 2 | table  |
| 3 | t1      |
| 1 | testing |
| 2 | table  |
| 3 | t2      |
+—+———+
6 rows in set (0.00 sec)

Federated 存储引擎

Federated 存储引擎提供了从一个 MySQL 实例连接其它实例上数据的能力  
Federated 存储引擎默认是 disable 状态,如果要开启,则需要在启动 MySQL 时使 
用—federated 选项

Example 存储引擎

Example 存储引擎只存在于 MySQL 源码中,只针对开发者,对实际的数据库使用者没有太大的意义 
Example 表只保留表结构,本身不保存数据

NDB 存储引擎

NDB 存储引擎专用在 MySQL Cluster 软件中,是 MySQL 自己推出的提高可用性和可靠性的集群软件

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3029字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7801502
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...