【分布式存储】数据存储和检索~B+树

为什么数据存储结构重要

在存储系统中,其实不管数据是什么样的,归根结底其实都还是取决于数据的底层存储结构,而主要常见的就是数据库索引结构,B+树、Redis中跳表、以及LSM、搜索引擎中的倒排索引。本质都是如何利用不用的数据结构,在性能和存储空间之间权衡。数据写的速度和读取数据。

MySQL中索引如何用B+树实现的

常用数据结构分析

哈希表: 哈希表以O(1)的查询效率著名,但是其本身是用空间换时间。并且不支持范围查询。
平衡二叉查找树: 查询和写入都是O(logN) 进行中序遍历的话,可以得到一个有序的数据序列,但是不支持快速查找。
跳表: 跳表,其实是通过多层的链表结构实现,可以快速查询、删除、插入 都是O(LogN)
在这里插入图片描述
而B+树和跳表十分相视。

B+树

在这里插入图片描述
我们从从一个二叉查找树进行改造,将非叶子节点不存储数据,由叶子节点存储数据。并且叶子节点通过指针可以前后引用。这样,当我们查找数据的时候,找到15。然后可以通过遍历.next 就可以进行范围查询。这就是为什么叶子节点需要双向链表进行引用。

如果将全部的数据都存储到内存中,那么内存是放不下的,所以一个方式就是,只将根节点存储在内存中,其他节点存储在磁盘上。
而二叉查找数因为数据如果较多,树的高度就会更高,查询的IO次数更多。
在这里插入图片描述
所以一般使用固定阶段,3层来保证数据查询的IO次数。操作系统读取数据是按照Page 64KB进行读取。所以我们尽量让每个节点存储的数据等于一页的大小。

合并和分裂
因为在使用数据库的时候,会删除和增加数据,所以当超过一定的节点数据时,会进行分裂和合并操作。
在这里插入图片描述

小结

本篇主要简单介绍下B+数在MySQL索引是如何实现的,B树和B+数据的区别,一共在两个地方

  • B+数节点不存储数据,只存储索引数据,B树存储的是数据。
  • B树叶子结点不需要通过链表链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/65560.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地跑Mapreduce程序的相关配置

本地跑MapReduce程序需要配置的代码 为了在本地运行MapReduce程序,需要加如下的东西 在项目中创建一个如图所示的包:org.apache.hadoop.io.nativeio,并在该包下面创建一个名为:NativeIO的类(注意:名字不能…

【在一个升序数组中插入一个数仍升序输出】

在一个升序数组中插入一个数仍升序输出 题目举例: 有一个升序数组nums,给一个数字data,将data插入数组nums中仍旧保证nums升序,返回数组中有效元素个数。 比如:nums[100] {1, 2, 3, 5, 6, 7, 8, 9} size 8 data 4 …

第05天 SpringBoot自动配置原理

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

Azure资源命名和标记决策指南

参考 azure创建虚拟机在虚拟机中选择编辑标签,并添加标记,点击应用 3.到主页中转到所有资源 4. 添加筛选器并应用 5.查看结果,筛选根据给服务器定义的标签筛选出结果。 参考链接: https://learn.microsoft.com/zh-cn/azure/cloud-adoption…

华为云Classroom赋能—TooKit助力开发者上云

对于资深程序员而言,IDE是必不可少的,它好比是剑客手中的宝剑,IDE帮助程序员更快更丝滑的去编程,同时插件就是这把剑上的各种Buff,为宝剑赋能,提供更好的升级打怪体验。 什么是Huawei Cloud Toolkit Huaw…

Docker部署rabbitmq遇到的问题 Stats in management UI are disabled on this node

1. Stats in management UI are disabled on this node #进入rabbitmq容器 docker exec -it {rabbitmq容器名称或者id} /bin/bash#进入容器后,cd到以下路径 cd /etc/rabbitmq/conf.d/#修改 management_agent.disable_metrics_collector false echo management_age…

前后端分离------后端创建笔记(04)前后端对接

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

9.利用matlab完成 泰勒级数展开 和 符号表达式傅里叶变换和反变换 (matlab程序)

1.简述 matlab之傅里叶变换和逆变换 首先生成一个方波(或者其他组合波形),然后对这个信号做傅里叶变换,拆解到频域,可以看到这个信号是由哪些频率的信号叠加而来。 然后把频域信号,用傅里叶逆变换恢复到时…

现代控制理论step()函数使用方法,多输入多输出系统的阶跃响应图如何只输出一个输入对应输出的阶跃响应图(step(sys)如何单独显示一个子图)

多输入多输出系统的阶跃响应图 考虑以下二阶状态空间模型: A [-0.5572,-0.7814;0.7814,0]; B [1,-1;0,2]; C [1.9691,6.4493]; sys ss(A,B,C,0);这个模型有两个输入和一个输出,因此它有两个通道: 从第一个输入到输出,从第二个输入到输出。每个通道都…

Wlan——无线服务集和AP的基本概念以及AP的配置

目录 WLAN服务集的基本概念 AP的基本概念 AP的分类 AP模式的切换 胖(FAT)AP介绍 胖AP的工作模式 接入模式和路由模式的区别 胖AP的组网方式 瘦(FIT)AP介绍 瘦AP的工作模式 瘦AP的组网方式 胖AP和瘦AP的区别 AP的配置…

wps设置一键标题字体和大小

参考 wps设置一键标题字体和大小:https://www.kafan.cn/A/7v5le1op3g.html 统一一键设置

docker搭建LNMP

docker安装 略 下载镜像 nginx:最新版php-fpm:根据自己需求而定mysql:根据自己需求定 以下是我搭建LNMP使用的镜像版本 rootVM-12-16-ubuntu:/docker/lnmp/php/etc# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 8.0…