mysql存储引擎之MyISAM与INNODB

?xml version="1.0" encoding="UTF-8"?

mysql有多种存储引擎:

可以看到,有InnoDB、Memory、MyISAM、CSV、Archive等9种,

其中,Myisam与INNODB是mysql的两种比较重要的存储引擎,两种引擎的存储方式不同,导致性能不同,比如锁的级别、索引的使用等。那本文就介绍下两种存储引擎的不同点。

一、MYISAM

先说下ISAM。索引顺序存取方法(ISAM, Indexed Sequential Access Method)最初是IBM公司发展起来的一个文件系统,可以连续地(按照他们进入的顺序)或者任意地(根据索引)记录任何访问。    

它的数据结构类似于B+树,树比较矮,查找起来IO少,比较快。

在Mysql-3.23版本使用了ISAM算法。索引的数据结构见B+树。

而MYISAM是mysql后期版本基于ISAM的优化,也是B+树为索引结构,MyISAM索引文件和数据文件是分离的。相比于ISAM,MYisam有可移植性更好、能处理更大的文件、更好的处理自增操作的优点。

其特点如下表:

可以看到锁的级别是表、不支持事务等特性。

二、Innodb

innodb也是以B+树作为索引结构的。但是有很大不同。

第一个不同:Innodb的索引文件和数据文件是一体的,数据文件本身就是索引结构的一部分。

叶节点包含了完整的数据记录。这种索引叫做聚集索引。因为InnoDB的数据文件本身要按主键聚集,所以Innodb要求表必须有主键(Mysiam可以没有)。

第二个与MyISAM索引的不同是InnoDB的辅助索引data域存储相应记录主键的值而不是地址。

聚集索引这种实现方式使得按主键的搜索十分高效,但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录.

其特点如下:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容