MySQL存储引擎-InnoDB&MyISAM
前言 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取。MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的。每一种存储引擎都有它的优势和劣势,本文只讨论最常见的InnoDB和MyISAM两种存储引擎进行讨论。 InnoDB存储引擎 InnoDB是默认的事务型存储引擎,也是最重要,使用最广泛的存储引擎。在没有特殊情况下,一般优先使用InnoDB存储引擎。 1. 数据存储形式: 使用InnoDB时,会将数据表分为.frm 和 idb两个文件进行存储。 2、锁的粒度 InnoDB采用MVCC(多版本并发控制)来支持高并发,InnoDB实现了四个隔离级别,默认级别是REPETABLE READ,并通过间隙锁策略防止幻读的出现。它的锁粒度是行锁。 3、事务 InnoDB是典型的事务型存储引擎,并且通过一些机制和工具,支持真正的热备份。 4、数据的存储特点 InnoDB表是基于聚簇索引(另一篇博客有介绍)建立的,聚簇索引对主键的查询有很高的性能,不过他的二级索引(非主键索引)必须包含主键列,索引其他的索引会很大。 更深入的了解: MySQL索引实现原理分析 MyISAM存储引擎 1、数据存储形式 MyISAM采用的是索引与数据分离的形式,将数据保存在三个文件中.frm.MYD,.MYIs。 2、锁的粒度 MyISAM不支持行锁