1. MyISAM和InnoDB的区别
①MyISAM查询效率高,InnoDB查询效率低;
②MyISAM不支持事务和外键,而InnoDB支持;
③MyISAM是非聚簇索引(索引的叶子节点存储的是数据的物理位置),InnoDB是聚簇索引(索引的叶子节点存储的就是数据);
④InnoDB支持行级锁。
⑤MyISAM对应着3个物理文件:.frm表结构文件,.myi表索引文件,.myd表数据文件。而InnoDB对应2个物理文件:.frm表结构文件,.ibd表数据和索引文件
2. 为什么MyISAM查询效率高?
①InnoDB寻址要映射到块,然后到行;MyISAM直接是文件的Offset。
②因为InnoDB支持事务,涉及多版本并发控制(MVCC),而且支持行级锁,所以会损失一定的性能。
③InnoDB的非聚集索引(叶子节点存储的是主键值,然后通过主键进行回表操作得到主键索引的聚集索引得到最终的数据)存在回表操作。
3. 数据库索引
3.1 什么是数据库索引:为了方便数据库快速查询、更新的手段,使用B+树实现。
3.2 B树和B+树的区别:B树是每个节点有多个子节点,不像二叉树,最多只有两个子节点;而且B树的所有叶子节点在同一层,而2-3树是最简单的B树,由二节点和三节点组成,二节点和三节点的要么没有子节点,要么有两个或三个子节点。然后B+树在B树的基础上进行了优化,B+树非叶子节点是叶子节点的索引,只有叶子节点通过链表存储数据。