导读:本篇文章是想聊聊MySQL为什么要出现存储引擎这项技术。

“存储引擎”从字面理解,“存储”的意思的存储数据。

“引擎”一词来源于发动机,它是发动机中的核心部分。在软件工程领域,相似的称呼有“游戏引擎”、“搜索引擎”,它们都是相应程序或系统的核心组件。

所以从这里可以看出“存储引擎”似乎也是数据库的核心。

下图是市场上流行的数据库管理系统。

mysql innodb存储引擎实现原理 mysql中存储引擎的作用_MySQL

存储引擎是MySQL有别于其他数据库管理系统的最大特色,比如它的兄弟Oracle中就没有专门的存储引擎的概念,仅仅有OLTP和OLAP模式的区分,两者的差别不大,只有参数设置上的不同。

Oracle无论哪种模式都是支持事务概念的,Oracle是一个不允许读脏的数据库系统。

回到MySQL身上,存储引擎不仅是MySQL的特色,也是作为MySQL核心的存在,那么它的作用到底是什么呢?

我们知道关系型数据库的数据是存在表里的,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式,每个表格就是一个数据。

表是在存储数据的同时,还要组织数据的存储结构,而这些数据的组织结构就是由存储引擎决定的。

即存储引擎的作用就是规定了数据存储时的存储结构。

现实生活中,由于不同业务产生了不同的数据,这些数据有的可能偏重于被频繁查询,有的要求增删速度快,有的则对事务、索引、外键有特殊规定。

这样一来,就对存储数据的表要求使用不同的数据组织结构,也就是存储引擎。

简而言之,就是业务直接决定了存储引擎。

从这里就可以看出,同一个数据库内的多个表,可以使用各自符合业务的存储引擎,即存储引擎的使用级别是数据表。

比如MySQL中MyISAM引擎不支持事务的概念,多用于数据仓库这样查询多而事务少的情况,速度较快。

MySQL中InnoDB引擎支持事务的概念,多用于web网站后台等实时的中小型事务处理后台。

对我们来说,MySQL提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同存储引擎,从而提高MySQL的使用性能。

对于MySQL支持的多种存储引擎,可以通过“SHOW ENGINES”语句来查看。

mysql innodb存储引擎实现原理 mysql中存储引擎的作用_mysql 存储引擎作用_02

对于日常工作来说,常用的存储引擎只有三种:默认的InnoDB、MyISAM和MEMORY。

具体如何选择不在本文要求之中。

总结:简单来说,存储引擎就是数据的存储结构,由实际业务决定。