我的博客:http://8.130.163.202:8090/
我在学习数据库的积累:
B树和B+树区别?
B树是内节点存储key和data,叶子节点为null。
B+树是内节点不存储data,只存储key,叶子节点放data,叶子节点还有一个顺序访问的指针,可以访问相邻叶子节点。
为什么选B+树作为数据库底层?
因为B+树内节点不存data,这样可以存更多key,整颗树比同数量级的B树,更矮胖一些,而树的高度越小,磁盘I/O次数会更少,查找速度相对更快。
MyISAM和Innodb的比较和介绍
MyISAM中,data存数据地址,索引不是数据,单独放在.MYI文件,数据放在.MYD
Innodb中,data存数据本身,索引也算数据,两者都放在.IDB文件
事务安全 | 锁粒度 | 全文索引 | 难易程度及效率 | 跨平台 | 使用场景 | |
---|---|---|---|---|---|---|
MyISAM | 0 | 表 | 1 | 容易,效率高 | 保存为文件,方便 | 大量select |
Innodb | 1 | 表,行 | 0 | 较难,效率较低 | 不太方便 | 大量insert和update |
回表查询
t(id PK, name KEY, sex, flag);
只查询name和id,那么在secondary tree中直接返回了,不会触发回表。因为其他字段不查
但查更多比如name, sex和id字段,因为secondary tree中没有,所以要拿到主键值id,在索引树中查出对应字段。
简称,基于非主键索引的查询需要多扫描一棵索引树。