第3章 MySQL 存储引擎简介

MySQL存储引擎概述

MySQL 在5.1(不包括)之前的版本中,存储引擎是需要在MySQL 安装的时候就必须和MySQL 一起被编译并同时被安装的。也就是说,5.1 之前的版本中,虽然存储引擎层和sql层的耦合已经非常少了,基本上完全是通过接口来实现交互,但是这两层之间仍然是没办法分离的,即使在安装的时候也是一样。

但是从MySQL5.1 开始,MySQL AB 对其结构体系做了较大的改造,并引入了一个新的概念:插件式存储引擎体系结构。MySQL AB 在架构改造的时候,让存储引擎层和sql 层各自更为独立,耦合更小,至可以做到在线加载信的存储引擎,也就是完全可以将一个新的存储引擎加载到一个正在运行的MySQL 中,而不影响MySQL 的正常运行。插件式存储引擎的架构,为存储引擎的加载和移出更为灵活方便,也使自行开发存储引擎更为方便简单。

MySQL 的插件式存储引擎主要包括MyISAM,Innodb,NDB Cluster,Maria,Falcon,Memory,Archive,Merge,Federated 等,其中最著名而且使用最为广泛的MyISAM 和Innodb两种存储引擎。MyISAM 是MySQL 最早的ISAM 存储引擎的升级版本,也是MySQL 默认的存储引擎。而Innodb 实际上并不是MySQ 公司的,而是第三方软件公司Innobase(在2005 年被Oracle 公司所收购)所开发,其最大的特点是提供了事务控制等特性, 所以使用者也非常广泛。

其他的一些存储引擎相对来说使用场景要稍微少一些,都是应用于某些特定的场景,如NDB Cluster 虽然也支持事务,但是主要是用于分布式环境,属于一个share nothing 的分布式数据库存储引擎。Maria 是MySQL 最新开发(还没有发布最终的GA 版本)的对MyISAM的升级版存储引擎,Falcon 是MySQL 公司自行研发的为了替代当前的Innodb 存储引擎的一款带有事务等高级特性的数据库存储引擎,目前正在研发阶段。Memory 存储引擎所有数据和索引均存储于内存中,所以主要是用于一些临时表,或者对性能要求极高,但是允许在数据Crash 的时候丢失数据的特定场景下。Archive 是一个数据经过高比例压缩存放的存储引擎,主要用于存放过期而且很少访问的历史信息,不支持索引。Merge 和Federated在严格意义上来说,并不能算作一个存储引擎。因为Merge 存储引擎主要用于将几个基表merge 到一起,对外作为一个表来提供服务,基表可以基于其他的几个存储引擎。而Federated 实际上所做的事情,有点类似于Oracle 的dblink,主要用于远程存取其他MySQL服务器上面的数据。

猜你喜欢

转载自blog.csdn.net/attack_breast/article/details/82559155