上一次修改时间:2015-11-28 23:11:07

myISAM和InnoDB的区别

  1. 存储方式

    1)InnoDB:表结构存储为一个文件table.frm,索引和表数据存在一个数据文件中;索引类型为聚簇索引,以B树索引为例,在主键索引的叶子节点上会存储具体的数据,其它的索引则会存储相对应的主键;

    2)MyISAM:表结构存储为一个文件table.frm,索引存储为一个文件table.MYI,数据存储为一个文件table.MYD,索引类型为非聚簇索引,以B树为例,所有类型的索引存储都是数据文件在硬盘上的指针;

  2. InnoDB的主键索引

    1)主键索引 既存储索引值,又在叶子中存储行的数据;
    2)如果没有主键, 则会Unique key做主键 ;
    3)如果没有unique,则系统生成一个内部的rowid做主键;

  3. 聚簇索引的优劣

    1)优势:通过主键查找时不用回行(通过指针去硬盘上查找数据),可以直接找到数据,因此速度非常快;

    2)劣势:如果碰到不规则数据插入时(如插入顺序为1,45,108,2之类的),造成频繁的页分裂,速度会比较慢;