MySQL存储引擎介绍

数据库中都会有存储引擎的概念,MySQL的特点就是其存储引擎支持插件式的,存储引擎用来处理数据库相关的CRUD操作。

MySQL中常见的存储引擎有如下几种:

  • InnoDB
  • MyISAM
  • Memory
  • NDB Cluster
  • Federated
  • CSV
  • Archive

InnoDB最开始作为第三方存储引擎存在,其诞生的时间比MySQL本身还要早,它被包括在MySQL数据库所有的二进制发行版本中,并从MySQL5.5开始取代MyISAM的位置成为默认的表存储引擎。另外,其他的存储引擎官方已经不再维护和开发,所以我们应该要尽可能使用InnoDB

可以通过show engines查看MySQL支持的存储引擎

当前MySQL版本支持的存储引擎

各存储引擎特性

先简述一下两个概念,OLTP和OLAP。


OLTP和OLAP的区别

InnoDB

  1. 面向OLTP的应用,支持事务;
  2. 支持行锁定、外键;
  3. 不仅可以使用文件系统,还能使用裸设备;
  4. 实现了SQL标准的4种隔离级别。

MyISAM

  1. 不支持事务,面向OLAP应用,如数据仓库;
  2. 并发时锁表;
  3. 索引容易损坏、数据容易丢失;
  4. 数据文件可以直接拷贝到另一台服务器使用。

MyISAM存储引擎创建的表由.MYD和.MYI文件组成。.MYD用来存放数据 ,.MYI存放索引。

表a和b的存储文件

a表的创建语句:create table a(a int) engine=myisam;。b表的创建语句:create table b(a int);其默认的存储引擎为InnoDB。
a.frm和b.frm为表的结构文件,可以通过mysqlfrm将frm文件转成create table语句。

mysqlfrm --diagnostic /var/lib/mysql/test/a.frm

mysqlfrm工具在MySQL Utilities工具包中,使用前需要先安装Utilities
.MYD是MyISAM存储引擎的数据存储文件,.MYI是MyISAM存储引擎的索引存储文件,.ibd是InnoDB存储引擎的数据和索引存储文件。

NDB

NDB存储引擎也叫NDB Cluster存储引擎,主要用于MySQL Cluster分布式集群环境。

Memory

  1. 全内存存储,会话失效后数据丢失;
  2. 支持哈希索引。

CSV

  1. 数据通过csv文件存储;
  2. 要求每个列都是NOT NULL属性。

Federated

Federated有点类似于Oracle的dblink,主要用于远程存取其他MySQL服务器上的数据。

各大存储引擎特性对比

参考
《MySQL技术内幕:InnoDB存储引擎》

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容