MySQL存储引擎
MyISAM
当我们创建一张使用myisam存储引擎的表时(假设表叫test),我们可以从数据库的存储目录中发现多了以下三个文件:test.frm、test.MYD、test.MYI,我们可以从字面理解。frm,即frame,存储了表结构的信息;MYD,即myisam data,存储了该表的数据信息; MYI,即myisam index,我们的索引就位于这个文件
InnoDB
相对于myisam,innodb仅仅使用两个文件存储一张表,即test.frm、test.ibd,ibd相当于合并了myisam的MYD与MYI,具体区别在哪?
myisam的MYI存储表的索引,其中叶子节点的data为每行数据的地址
innodb的ibd同样存储着表的索引,不同之处在于其中叶子节点存储的不再是每行数据的地址,而是直接存储对用行的数据
这也就是我们常说的非聚集索引(myisam)与聚集索引(innodb),需要注意的是,即使我们在创建数据表的时候没有指定索引,MySQL也会自动帮我们建立一个类似rowid的索引