MySQL的两种常用存储引擎的概览

InnoDB是MySQL的默认存储引擎,被设计用来处理大量的短期(short-lived)事务,短期事务大部分情况下都会正常提交,很少会被回滚。其次,其性能和自动崩溃回复特性,使得其在非事务型存储的需求中也非常流行。如果想学习存储引擎,这是一个非常非常值得学习的引擎。
下面我们来说一下这个引擎的概览,这对我们理解引擎很有帮助。

  • InnoDB的数据存储在表空间(tableplace)中,表空间是有其管理的一个黑盒子,由一系列的数据文件组成.

  • InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离等级,其默认级别是可重复读, 并且通过间隙锁(next-key locking)策略防止幻读的出现,间隙锁使得InnoDB不仅仅查询涉及到的行,而且还会对索引中的间隙进行锁定,以防止幻影行的出现。

  • InnoDB表是基于聚簇索引建立的,其中聚簇索引对主键查询有很高的性能,不过它的二级索引(非主键索引)中必须包含主键列,所以如果主键列很大的话,其它的所有索引就会很大。因此,若表上的索引较多的话,主键应当尽可能的小。

  • MyISAM索引不支持事务和行级锁,但是若只是只读数据,或者表比较小,那么其性能还是很高的。

  • MyISAM存储时,数据文件和索引文件分别.YMD和.YMI文件存储。

简单总结,MySQL拥有分层的架构,上层是服务层的服务和查询执行引擎,下层则是存储引擎,如果可以理解存储引擎和服务层之间如何通过API进行来回交互,那么就能抓住MySQL的核心基础架构的精髓。(路漫漫其修远兮,吾将上下而求索~)

你可能感兴趣的:(MySQL的两种常用存储引擎的概览)