为了管理方便,人们把 连接管理
、 查询缓存
、 语法解析
、 查询优化
这些并不涉及真实数据存储的功能划分为MySQL server 的功能,把真实存取数据的功能划分为 存储引擎
的功能。所以在MvSQL server 完成了查询优化后,只需按照生成的 执行计划
调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。
MySQL中提到了存储引擎的概念。简而言之,存储引擎就是指表的类型。 其实存储引擎以前叫做 表处理器
,后来改名为 存储引擎
,它的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作。
MySQL 8.0.34默认支持的存储引擎:
show engines;
MySQL从3.23.34a开始就包含lnnoDB存储引擎。 大于等于5.5之后,默认采用InnoDB引擎。
优点:
除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎,除非有特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎
缺点:
MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等。5.5之前默认的存储引擎。
特点:
应用场景:只读应用或者以读为主的业务
archive
是归档 的意思,仅仅支持 插入
和 查询
两种功能 (行被插入后不能再修改)zlb压缩库
,在记录请求的时候实时的进行压缩,经常被用来作为仓库使用行级锁
。该ARCHIVE引擎支持 AUTO_INCREMENT
列属性。AUTO_INCREMENT列可以具有唯一索引或非唯一索引。尝试在任何其他列上创建索引会导致错误适用场景:适合日志和数据采集(档案)类应用,适合存储大量的独立的作为历史记录的数据。拥有很高的插入速度,但是对查询的支持较差
丢弃所有插入的数据
,不做任何保存普通的CSV文件作为MySQL的表来处理
,但不支持索引数据交换的机制
,非常有用Memory采用的逻辑介质是 内存
,响应速度很快
,但是当mysqld守护进程崩溃的时候 数据会丢失
。另外,要求存储的数据是数据长度不变的格式,比如,Blob和Text类型的数据不可用(长度不固定的)
支持哈希 (HASH) 索引和 B+树索引
,默认使用哈希索引,也可指定为B+树索引类型表的大小是受到限制
的。表的大小主要取决于两个参数,分别是 max_rows
和 max_heap_table_size
。其中,max_rows可以在创建表时指定; max_heap_table_size的大小默认为16MB可以按需要进行扩大一般不使用,而是使用redis
Federated引擎是访问其他MySQL服务器的一个 代理
,尽管该引擎看起来提供了一种很好的 跨服务器的灵活性
,但也经常带来问题,因此 默认是禁用的
也叫做 NDB Cluster 存储引擎,主要用于 MySQL cluster 分布式集群
环境,类似于 Oracle 的 RAC 集群