发布信息

为什么MongoDB驳回B树索引 而Mysql用B 树做索引 (为什么month函数用不了)

     2024-10-22 14:57:13     866

本文目录导航:

为什么MongoDB驳回B树索引,而Mysql用B+树做索引

1、这种索引模式,可以提高数据访问的速度,由于索引和数据是保留在同一棵B树之中,从聚簇索引中失掉数据通常比在非聚簇索引中要来得快。

2、MongoDB索引经常使用B树数据结构(确切的说是B-Tree,MySQL是B+Tree)MongoDB的索引可以分为:单字段索引、复合索引以及天文空间索引等。

3、一个是索引会产生功能疑问,另外一个就是在必定的期间后,所占空间会莫名其妙地增大,所以要活期把数据库做修复,活期从新做索引,这样会优化MongoDB的稳固性和效率。

Mysql InnoDB b+树的高度

为什么Mysql思考经常使用B+树,而不是B树,其实咱们可以先了解下B树和B+树的特点来看下。

※ 树的每个结点都会存储数据 ※ 单次查问不必定要遍历到树的根部,平均查问期间会比拟快 ※ 非叶子节点不存储数据,只存储(冗余)索引,索引蕴含主键和指针 ※ 叶子节点才真正存储数据 ※ 每个叶子节点相互链表相连,保障了范畴查问的时效性(页之间用双向链表衔接,数据间用单项链表链接) InnoDB最小存储单位是页,叶子节点和非叶子节点最小单位都是页,页大小Mysql 自动设定字节,约为16KB。

咱们假定主键ID为bigint类型,长度为8字节,而指针大小在InnoDB源码中设置为6字节,这样一共14字节 咱们一个页中能寄存多少这样的索引元素,其实就代表有多少指针,即/14=1170; 高度为2的B+树能寄存1170×16= 高度为3的B+树能寄存1170×1170×16 = InnoDB中B+树高度普通为1-3层,它就能满足千万级的数据存储。

在查找数据时一次性页的查找代表一次性IO,所以经过主键索引查问通常只有要1-3次IO操作即可查找到数据。

深刻易懂的图文 红黑树,B树,B+树 实质区别及运行场景

在一次性技术面试中,面试官向小史抛出了对于MySQL为何驳回B+树存储索引的疑问。

这并不是单纯的调查技术记忆,而是调查小史对数据结构和业务场景的深化了解。

B+树的设计源于硬盘存储的个性,当数据量大且不可一次性性加载内存时,B+树的有序结构和叶子节点存储一切数据的设计使得多条数据的查问更高效,尤其在数据库场景中,比如按ID排序选取多条数据时,B+树的长处更为显著。

相比之下,红黑树只管规定复杂,但面试官关注的是其设计面前的逻辑和运行场景,而非要求小史记忆。

在选用数据结构时,面试官更偏差于了解其顺应的业务场景,如红黑树或者更适宜对单个数据操作频繁的状况,而B树和B+树在解决少量数据和多行查问时体现更佳。

面试完结后,小史仰仗对这些数据结构的了解和业务场景的联合,完成经过了二面,几天后便收到了A厂的Offer。 为什么MongoDB驳回B树索引

这次教训让小史深入意识到,技术面试中不只有把握扎实的实践常识,更要能将实践与实践运行相联合,了解数据结构在实践名目中的作用和选用理由。

相关内容 查看全部