MyISAM引擎和InnoDB引擎的区别
(1)存储空间:MyISAM可以被压缩,存储空间比较小;InnoDB需要较多内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
(2)文件格式:MyISAM数据和索引是分开存储的,数据是.MYD格式,索引是.MYI格式;InnoDB是集中存储的,格式是.ibd。
(3)记录存储顺序:MyISAM按照记录插入顺序保存;InnoDB按照主键大小有序存储。
(4)外键: MyISAM不支持外键;InnoDB支持外键。
(5)事务: MyISAM不支持事务;InnoDB支持事务。
(6)锁机制:MyISAM是表级锁定;InnoDB是行级锁定和表级锁定都支持,锁定粒度更小,并发能力更高。
(7)增删改查:对于SELECT,MyISAM更优;对于INSERT、UPDATE、DELETE,InnoDB更优。
(8)索引实现方式:两者都是B+树索引,MyISAM是堆表;InnoDB是索引组织表。
(9)哈希索引:MyISAM不支持;InnoDB支持。
(10)全文索引:MyISAM支持;InnoDB不支持。
MyISAM索引和InnoDB索引的区别
(1)MyISAM是非聚簇索引;InnoDB是聚簇索引。
(2)MyISAM索引的叶子节点存储行数据地址,需要寻址一次才能得到数据。
(3)InnoDB主键索引的叶子节点存储行数据,所以主键索引比较高效。
(4)InnoDB非主键索引的叶子节点存储主键和其他带索引的列数据,因此查询时做到覆盖索引会比较高效。