【MySQL架构篇】存储引擎

1. 概述

为了管理方便,人们把 连接管理查询缓存语法解析查询优化 这些并不涉及真实数据存储的功能划分为MySQL server 的功能,把真实存取数据的功能划分为 存储引擎 的功能。所以在MvSQL server 完成了查询优化后,只需按照生成的 执行计划 调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。

MySQL中提到了存储引擎的概念。简而言之,存储引擎就是指表的类型。 其实存储引擎以前叫做 表处理器,后来改名为 存储引擎,它的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作。

MySQL 8.0.34默认支持的存储引擎:

show engines;

在这里插入图片描述

2 InnoDB引擎:具备外键支持功能的引擎

MySQL从3.23.34a开始就包含lnnoDB存储引擎。 大于等于5.5之后,默认采用InnoDB引擎

优点:

  • 支持外键(一般不使用,会影响性能)
  • 支持事务
  • 索引即数据

除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎,除非有特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎

缺点:

  • 对比MyISAM的存储引擎,InnoDB写的处理效率差一些(针对只新增和查询的表,新增时需要生成B+树) ,并且会占用更多的磁盘空间以保存数据和索引
  • MyISAM只缓存索引,不缓存真实数据; InnoDB不仅缓存索引还要缓存真实数据对内存要求较高(需要同时将索引与数据一起加入内存),而且内存大小对性能有决定性的影响

3. MyISAM引擎:主要的非事务处理存储引擎

MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等。5.5之前默认的存储引擎。

特点:

  • 不支持事务、行级锁、外键,有一个毫无疑问的缺陷就是 崩溃后无法安全恢复
  • 访问的速度快
  • 针对数据统计有额外的常数存储
  • 索引与数据分开存储:
    • .frm存储表结构
    • .MYD存储数据
    • .MYI存储索引

应用场景:只读应用或者以读为主的业务

4. Archive 引擎:用于数据存档

  • archive 是归档 的意思,仅仅支持 插入查询 两种功能 (行被插入后不能再修改)
  • 拥有很好的压缩机制,使用 zlb压缩库,在记录请求的时候实时的进行压缩,经常被用来作为仓库使用
  • ARCHIVE存储引擎采用了 行级锁。该ARCHIVE引擎支持 AUTO_INCREMENT 列属性。AUTO_INCREMENT列可以具有唯一索引或非唯一索引。尝试在任何其他列上创建索引会导致错误

适用场景:适合日志和数据采集(档案)类应用,适合存储大量的独立的作为历史记录的数据。拥有很高的插入速度,但是对查询的支持较差

5. Blackhole 引擎: 丢弃写操作,读操作会返回空内容

  • Blackhole引擎没有实现任何存储机制,它会 丢弃所有插入的数据,不做任何保存
  • 但服务器会记录Blackhole表的日志,所以可以用于复制数据到备库,或者简单地记录到日志。但这种应用方式会碰到很多问题,因此并不推荐

6. CSV引擎:存储数据时,以逗号分隔各个数据项

  • CSV引擎可以将 普通的CSV文件作为MySQL的表来处理,但不支持索引
  • CSV引擎可以作为一种 数据交换的机制,非常有用
  • 对于数据的快速导入、导出是有明显优势的

7. Memory引擎:置于内存的表

Memory采用的逻辑介质是 内存响应速度很快,但是当mysqld守护进程崩溃的时候 数据会丢失 。另外,要求存储的数据是数据长度不变的格式,比如,Blob和Text类型的数据不可用(长度不固定的)

  • Memory同时 支持哈希 (HASH) 索引和 B+树索引,默认使用哈希索引,也可指定为B+树索引类型
  • MEMORY 表的大小是受到限制 的。表的大小主要取决于两个参数,分别是 max_rowsmax_heap_table_size。其中,max_rows可以在创建表时指定; max_heap_table_size的大小默认为16MB可以按需要进行扩大

一般不使用,而是使用redis

8. Federated引擎: 访问远程表

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

9. Merge引擎: 管理多个MyISAM表构成的表集合

10. NDB引擎: MySQL集群专用存储引擎

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值