作者孤独烟 引言今天讲的这个主题,是《面试官:谈谈你对mysql索引的认识》,里头提到的一个坑。也就是说,如果面试官问的是,为什么Mysql中Innodb的索引结构采取B+树?这个问题时,给自己留一条后路,不要把B树喷的一文不值。因为网上有些答案是说,B树不适合做文件存储系统的索引结构。如果按照那种答法,自己就给自己挖了一个坑,很难收场。因此,就有了这篇文章的诞生~正文这里的Mysql指的是Inn
转载
2023-10-20 08:48:21
40阅读
前言最近我们的项目使用到MongoDB,因为之前的数据存储都是选择MySql或者PostgressSQL,为什么这个项目要选择MongoDB呢?进一步了解到原来MongoDB的默认存储引擎是WridedTiger,并使用B树作为索引底层的数据结构。本着好奇最后打算对B树进行深入了解。一、B树是什么?查阅了相关资料了解到,B树英文名叫B-Tree(Balance-Tree),是一种平衡多路搜索树,多
转载
2023-08-26 16:23:28
79阅读
之前对index的了解仅仅是停留在使用上面,一直都不太清楚index的原理没,那段时间专门看了一下,这里我梳理一下如果我们想要理解索引的原理,我们首先要了解一种最基本的数据结构Btree 就是balance tree ,这个图就是多路平衡排序树的一个例子,我们了解到每个节点的存储是按key-valuede形式存放的,一般一个节点的大小不会哦超过一个磁盘块的大小,这很重要,因为这关系到一个非常重要的
转载
2023-08-10 12:52:37
44阅读
先说B树和B+树的区别B树:非叶子节点也存储数据B+树:只有叶子节点存储数据,且所有叶子节点通过指针相连接。为什么MongoDB选择B树而,MySQL选择B+树呢?两种数据结构的区别摆在上面了,那就看MongoDB和MySQL的需求首先:MongoDB属于文档型存储的NoSQL,意味着它并不是关系型数据库,既然如此,基本不会出现批量连续数据的查询,那么B+树的叶子节点通过指针相连接对于MongoD
转载
2023-05-19 11:29:02
156阅读
MySQL 中的许多概念在 MongoDB 中具有相近的类比。下表是一些常见概念:MySQLMongoDB库 Database库 Database表 Table集合 Collection行 Row文档 Document列 Column字段 Fieldjoins嵌入文档或者链接 1、B-树 其中 B 是 balance( 平衡
转载
2023-08-06 13:34:31
130阅读
前面的文章曾经分析过 为什么 MySQL 使用 B+ 树,有读者在文章下面留言,希望能出一个为什么 MongoDB 使用 B 树的对比文章,这是一个比较好的问题,MySQ...
转载
2022-10-12 11:18:04
78阅读
引言很久没写文章了,今天回来重操旧业。今天讲的这个主题,是《面试官:谈谈你对mysql索引的认识》,里头提到的一个坑。mysql也就是说,若是面试官问的是,为何Mysql中Innodb的索引结构采起B+树?这个问题时,给本身留一条后路,不要把B树喷的一文不值。由于网上有些答案是说,B树不适合作文件存储系统的索引结构。若是按照那种答法,本身就给本身挖了一个坑,很难收场。所以,就有了这篇文章的诞生~面
转载
2023-08-07 07:13:50
120阅读
# 为什么Mongodb使用B树
## 1. 流程概述
为了让小白更容易理解,我们可以用以下流程图来展示整个过程:
```mermaid
stateDiagram
[*] --> 开始
开始 --> 创建B树
创建B树 --> 插入数据
插入数据 --> 查询数据
查询数据 --> 结束
结束 --> [*]
```
## 2. 详细步骤
B+Tree,B-Tree是棵自平衡的搜索树【名词解释】空间局部性原理:如果一个存储器的某个位置被访问,那么将它附近的位置也会被访问一、B-Tree:B-Tree是专门为外部存储器设计的,如磁盘,它对于读取和写入大量数据有良好的性能。所以一般用于文件系统或者数据库中。MongoDB (索引)使用的是B-树。定义只需要知道B-树允许每个节点有更多的子节点即可。子节点数量一般在上千,具体数量依赖外部存
引言好久没写文章了,今天回来重操旧业。毕竟现在对后端开发的要求越来越高,大家要做好各种准备。因此,大家有可能遇到如下问题为什么Mysql中Innodb的索引结构采取B+树?回答这个问题时,给自己留一条后路,不要把B树喷的一文不值。因为网上有些答案是说,B树不适合做文件存储系统的索引结构。如果按照那种答法,自己就给自己挖了一个坑,很难收场。因此,就有了这篇文章的诞生~文末附面试指南!正文这里的Mys
原创
2020-10-23 20:53:10
322阅读
正文这里的Mysql指的是Innodb的存储引擎下的索引结构,其他存储引擎我们暂时不讨论。B树和B+树开头,我们先回忆一下,B树和B+树的结构以及特点,如下所示:B树 注意一下B树的两个明显特点树内的每个节点都存储数据叶子节点之间无指针相邻B+树 注意一下B+树的两个明显特点数据只出现在叶子节点所有叶子节点增加了一个链指针针对上面的B+树和B树的特点,我们做一个总结
转载
2023-08-05 00:55:22
42阅读
Mongodb是一个文档型的分布式NOSQL数据库,主要存储一种类似JSON的数据格式BSON。因为时文档型数据库,所以可以存储各种复杂的数据。具有高性能,易部署,易使用等特点。支持索引,复制和数据恢复。Mongodb架构图基本概念术语描述文档mongodb中的基本数据单元,类似于关系数据库的行集合对文档进行分组,类似关系型数据库的表数据库一个mongodb实例可有多个数据库,数据库主要用来对集合
转载
2023-08-20 21:06:45
45阅读
**MongoDB为什么不使用B+树**
在关系型数据库中,B+树是一个常用的数据结构,用于索引和管理数据。然而,MongoDB作为一种非关系型数据库,却选择了不使用B+树作为其底层数据结构。本文将解释为什么MongoDB不使用B+树,并提供相应的代码示例。
**B+树的优点**
在介绍为什么MongoDB不使用B+树之前,我们先来了解一下B+树的优点。B+树具有以下特性:
1. 高效的范
原创
2023-07-21 15:21:51
914阅读
为什么 MongoDB 选择B树,Mysql 选择B+树? 我们知道,Mongodb索引使用B树,而MySQL使用B+树。那么这两者的区别是什么? 注意:这里的Mysql指的是Innodb的存储引擎下的索引结构,其他存储引擎暂不考虑。 一、B树和B+树的区别 很明显,我们想向弄清楚原因就要知道B树和 ...
转载
2021-07-12 19:28:00
524阅读
先从数据结构的角度来答。题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据。从Mysql(Inoodb)的角度来看,B+树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上。那
转载
2018-05-24 23:33:51
2826阅读
点赞
先从数据结构的角度来答。题主应该知道B-树和B+树最重要的一个区别就...
转载
2022-12-05 15:53:05
181阅读
谈谈什么是B-/B+树,以及在MongoDB和Mysql中应用什么是B-树B-树的查找什么是B+树B-树和B+树的区别什么是MongoDB为什么 MongoDB 使用B-树为什么 Mysql 使用B+树 什么是B-树定义:B-树是一类树,包括B-树、B+树、B*树等,是一棵自平衡的搜索树,它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。B-树是专门为外部存储器设计的,如磁盘
1. 使用 B+ 树其实能够保证数据按照键的顺序进行存储,也就是相邻的所有数据其实都是按照自然顺序排列的,使用哈希却无法达到这样的效果. 如果我们使用 B+ 树作为底层的数据结构,那么所有只会访问或者修改一条数据的 SQL 的时间复杂度都是 O(log n),也就是树的高度, 但是使用哈希却有可能达到 O(1) 的时间复杂度,看起来是不是特别的美好。但是当我们使用如下所示的 SQL 时,哈希的表
转载
2023-11-06 20:30:17
31阅读
专注于Java领域优质技术,欢迎关注
作者:孤独烟 引言好久没写文章了,今天回来重操旧业。今天讲的这个主题,是《面试官:谈谈你对mysql索引的认识》,里头提到的一个坑。也就是说,如果面试官问的是,为什么Mysql中Innodb的索引结构采取B+树?这个问题时,给自己留一条后路,不要把B树喷的一文不值。因为网上有些答案是说,B树不适合做文件存储系统的索引结构。如果按照那种答法
转载
2023-09-04 19:20:00
49阅读
1.b+树只有叶子节点存数据 b树是每个节点都存数据 在相同数据量下b树的高度更高,所以查询效率更低2.b树每一层存的是数据+索引;b+树是除了叶子节点存的是数据+索引以外,其余节点只存索引,所以在相同数据量的情况下,b树的高度会比b+ 树高很多...
原创
2021-07-01 10:14:48
1611阅读