前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【MySQL】基础实战篇(3)—九大储存引擎详解

【MySQL】基础实战篇(3)—九大储存引擎详解

作者头像
洁洁
发布2023-10-10 14:40:47
3470
发布2023-10-10 14:40:47
举报
文章被收录于专栏:小洁叫你mysql

InnoDB引擎

具备外键支持功能的事物存储引擎

InnoDB是mysql默认事务型引擎,它被设计处理大量短期事务。可以确保事务的完整提交和回滚。 除了增加和查询外,还需要更新,删除操作等优先选用InnoDB引擎 InnoDB是为处理巨大数据量的最大性能设计。 相对于MyISAM存储引擎来说,InnoDB的处理效率差一些 并且会占用更多的磁盘空间以保存数据和·索引。 MyISAM存储引擎只缓存索引,不缓存真实数据,InnoDB不仅缓存索引,而且还要缓存真实数据,对内存要求较高。而且内存大小对性能有绝对性影响。

举例: 数据库 a ,表 b

如果表b采用InnoDB存储引擎 data\a中会产生一个或两个文件

==b.frm ==:表述表结构文件,字段长度等

如果采用系统表空间模式的,数据信息和索引信息都储存在ibdata1中 如果采用独立表空间存储模式 ,data\a中还会产生b.ibd文件(储存数据信息和索引信息)

此外: 在,MySQL5.7中会在data\a目录下生成db.opt文件,用于保护数据库的相关配置。而在mysql8.0后不会再提供db.opt文件。 并且MySQL8.0中不会再生成b.frm文件,而是合并在b.ibd文件中。

MyISAM引擎

主要的非事务处理存储引擎 MyISAM提供了大量的特性,包括全文索引,压缩,空间函数等。但是MyISAM不支持 事务,外键,行级锁。最大的缺陷·就是崩溃后无法安全恢复。 MyISAM优势是访问速度快,对事务完整性没有要求或者以select,insert为主的应用。 针对数据统计有额外的常数存储,故而count(*)的查询效率很高。

如果表b采用MyISAM存储引擎 data\a中会产生三个文件。

MySQL5.7中b.frm文件中: 描述表结构文件,字段长度等。 MySQL8.0中b.×××.sdi文件中:描述表结构文件,字段长度等。 b.MYD(MYDATA):数据信息文件,储存信息文件,储存数据信息(如果采用独立表存储模式) b.MYI(MYIndex):存放索引信息文件

对比

对比项

MyISAM

InnoDB

外键

不支持

支持

事务

不支持

支持

行级锁

表锁,即使一条记录也会锁住整个表,不适合高并发的操作

行锁,操作时只会锁一行,不会对其他行有影响,适合高并发操作

缓存

只缓存索引,不缓存真实数据

缓存索引和真实数据

自带系统使用

使用

不使用

关注点

性能:节省资源,消耗少,简单业务

事务:并发写,事务,更大资源

默认安装

yes

yes

默认使用

no

yes

Archive引擎

archive是归档的意思 仅仅支持插入和查询两种功能(行被插入后不能再修改)。 在MysQL5.5以后支持索引功能。 拥有很好的压缩机制,使用z1ib压缩库,在记录请求的时候实时的进行压缩,经常被用来作为仓库使用。

创建ARCHIVE表时,存储引擎会创建名称以表名开头的文件。数据文件的扩展名为.ARZ。

根据英文的测试结论来看,同样数据量下,Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。 ARCHIVE存储引擎采用了行级锁。该ARCHIVE引擎支持AUTO_INCREMENT列属性。AUTO_INCREMENT列可具有唯一索引或非唯一索引,尝试在任何其他列上创建索引会导致错误。 archive表适合日志和数据采集(档案)类应用,适合存储大量的独立的作为历史记录的数据。拥有很高的插入速度但是对查询的支持较差。

Blackhole引擎

丢弃写操作,读操作会返回空内容

Blackhole引擎没有实现任何存储机制,它会丢弃所有插入的数据,不做任何保存。

但服务器会记录Backhole表的日志,所以可以用于复制数据到备库,或者简单地记录到日志。但这种应用方式会碰到很多问题,因此并不推荐。

CSV引擎

存储数据时,以逗号分隔各个数据项 CSV引擎可以将普通的CSV文件作为MvSOL的表来处理,但不支持索引 CSV引擎可以作为一种数据交换的机制,非常有用。 CsV存储的数据直接可以在操作系统里,用文本编辑器,或者excel读取。 对于数据的快速导入、导出是有明显优势的。 创建CSV表时,服务器会创建一个纯文本数据文件,其名称以表名开头井带有.csv扩展名,当你将数据存储到集中时,存储引擎将其以逗号分隔值格式保存到数据文件中。

Memoy引擎

采用的逻辑介质是内存,响应速度很快,但是当mys qld守护进程崩溃的所时候数据会丢失。

另外,要求存储的数据是数据长度不变的格式,比如.Blob和Text米型的数据不可用

主要特征 Memory同时支持哈希(HASH)索引和B+树索引。 哈希索引相等的比较快,但是对于范围的比较慢很多。 默认使用哈希(HASH)索引,其速度要比使用B型树(BTREE)索引快。 如果希望使用B树索引,可以在创建索引时选择使用

Memory表至少比MyISAM表要快一个数量级。

MEMORY表的大小是受到限制的,表的大小主要取决于两个参数 分别是max_rows和max_heap_table_size. 其中max_rows可以在创建表时指定 数据文件与索引文件分开存储 每个基于MEMORY存储引擎的表实际对应一个磁盘文件,该文件的文件名与表名相同,类型为.frm类型,该文件中只存储表的结构,而其数据文件都是存储在内存中的。有利于数据的快速处理,提供整个表的处理效率。 缺点:其数据易丢失,生命周期短。基于这个缺陷,选择MEMORY存储引1警时需要特别小心

4.7Federated引擎

访问远程表 Federated引擎是访问其他MySQL服务器的一个代理,尽管该引擎看起来提供了一种很好的跨服务器的灵活性,但也经常带来问颗,因此默认是禁用的。

Merge引擎

管理多个MylSAM表构成的表集合

NDB引擎

MysQL集群专用存储引擎 也做NDB Cluster存储引擎,主要用于MySQL Cluster分布式集群环境,类似于Oracle的RAC集群。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • InnoDB引擎
  • MyISAM引擎
  • 对比
  • Archive引擎
  • Blackhole引擎
  • CSV引擎
  • Memoy引擎
  • 4.7Federated引擎
  • Merge引擎
  • NDB引擎
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档