Mysql中插件式存储引擎是一个很重要的特点,存储引擎决定了如何存储和索引数据,是否使用事务等。

查看Mysql支持的存储引擎

mysql提供了多种存储引擎,我使用的mysql版本为5.7.23-log,其支持的存储引擎有:
mysql5.7.23-log支持的存储引擎.png
图中,默认的存储引擎是InnoDB;
其中Transactions表示是否支持事务;
XA表示是否支持分布式XA规范;
Savepoints表示是否支持事务保存点;

Mysql常用存储引擎

mysql常用存储引擎.png

这里简单的介绍几个存储引擎。

InnoDB存储引擎

  • InnoDB存储引擎支持事务,使用行级锁设计,也支持外键(虽然很少用外键);
  • InnoDB使用多版本并发控制(MVCC)来获得高并发性,并且实现了SQL标准的4中隔离级别,默认为repeatable read(允许幻读)。
  • 对于表中数据的存储,InnoDB存储引擎采用了聚集的方式,因此每张表的存储都是按主键的顺序进行存放,如果没有显式的在表定义时指定主键,其会为每一行生成6字节的ROWID作为主键。

MyISAM存储引擎

  • MyISAM存储引擎不支持事务、表锁设计,支持全文索引,面向OLAP数据库应用,比如数据仓库。
  • MyISAM存储引擎表由MYD和MYI组成,MYD用来存储数据文件,MYI用来存储索引文件。

Memory存储引擎

  • Memory存储引擎将表中的数据存放在内存中,如果数据库重启或者宕机,数据会丢失,适合存储临时数据。
  • 默认使用哈希索引。

本篇学习了常用的存储引擎,因为我学习是参考着《MySQL技术内幕:InnoDB存储引擎》这本书,
所以下篇会学习一下InnoDB存储引擎的体系架构。

tencent.jpg