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存储引擎》

你可能感兴趣的:(MySQL存储引擎介绍)