MySql底层原理
MySql有两种存储引擎MyISAM和InnoDB
1.MyISAM
MyISAM是非聚集索引,底层是使用B+树作为索引结构。
非聚集索引的定义:索引的逻辑顺序与磁盘上的数据行物理存储顺序不同。
当一个表的存储引擎是MyISAM时,表所在文件夹中会出现.MYD和.MYI文件。其中.MYD中存储的排序好的索引,叶子结点中存储的在.MYI中数据的地址。
以下表为例:以empno列作为主键索引.
2.InnoDB
InnoDB 是聚集索引,底层也是使用B+树作为索引结构。
聚集索引的定义:索引的逻辑顺序与磁盘上的数据行物理存储顺序相同。叶子结点中存储的是整行数据。
3.MyISAM和InnoDB两个存储引擎的区别
InnoDB支持外键,MyISAM不支持外键。
InnoDB表必须有主键(用户没有指定的话会自己找或生产一个主键),而Myisam可以没有。
Innodb存储文件有frm、ibd,而Myisam是frm、MYD、MYI。
InnoDB支持表、行(默认)级锁,而MyISAM支持表级锁。
InnoDB是聚集索引,MyISAM是非聚集索引。