mysql 索引 B+tree

news2024/10/5 16:19:53

 

B+树(B+Tree):

  1. 结构

    • B+树是一种自平衡的多路查找树,每个节点可以拥有M个子节点(M通常是一个较大的常数,比如几百),每个节点最多含有M-1个键和M个指向子节点的指针。
    • 叶子节点存储实际的数据,并且所有叶子节点通过指针串联成一个有序链表,便于范围查询。
  2. 特点

    • B+树的非叶子节点不存储数据,仅存储键和指向子节点的指针,这使得单个节点可以存储更多索引信息,减少了树的高度。
    • 所有的查询都要经过内部节点直到叶子节点才能找到数据,但叶子节点集中存储数据并形成有序链表,有利于做全表扫描和范围查询。
  3. 应用场景

    • B+树主要应用于数据库索引、文件系统和其他需要处理大量数据并优化磁盘I/O操作的环境。
    • 由于B+树的这种特性,它能够极大程度地减少磁盘I/O次数,特别是在大数据集下表现优异,因为它能在一次磁盘读取中检索到更多的相关数据。

 

MySQL 中的 InnoDB 存储引擎使用 B+Tree 作为索引结构,它非常适合磁盘存储和检索大量有序数据。在内存中,B+Tree 索引页的存储方式遵循以下原则:

  1. 页(Page)的基本概念

    • InnoDB 存储引擎的管理单元是页(Page),默认情况下每个页的大小通常是 16KB。
    • 页是磁盘和内存之间交互的最小单位,数据在写入磁盘或从磁盘读取到内存时,都是按页为单位进行的。
  2. B+Tree 结构

    • B+Tree 的每个节点都对应着一个页,节点内包含了多个键值对以及指向子节点的指针(非叶子节点)或记录指针(叶子节点)。
    • 非叶子节点仅存储索引列(键值),不存储实际的数据行,这样可以容纳更多的索引键,减小单次 I/O 读取的数据量,提高查找效率。
    • 叶子节点存储所有的索引键,并且叶子节点之间通过指针相互连接,形成了一个有序链表,方便范围扫描。
  3. 内存存储示例: 假设有一个简单的用户表,其中包含 id(主键)和 username 字段,并在 id 上建立了 B+Tree 索引。

    • 内存中加载了一个 B+Tree 的索引页,这个页包含了多个槽(slot),每个槽包括键值(如 id)和指针。

    • 例如,假设一个页可以存储100个键值对,则可能的格式如下:

                当查询 id=123 时,MySQL 会从内存缓存池(Buffer Pool)中查找对应的 B+Tree 索引页,如果不在缓存中则从磁盘读取。从根节点开始,沿着键值比较的路径向下遍历,最终到达存储该 id 的叶子节点,叶子节点中找到对应的记录指针,再通过该指针获取完整的数据行。

注意,内存中的页并不直接反映磁盘上的物理布局,而是经过了数据库系统的逻辑组织和管理,确保了即使在不同的硬件环境下,也能保持高效的读写性能。并且,MySQL 还有诸如自适应哈希索引(Adaptive Hash Index)等特性,可以在特定条件下动态地在内存中为热点索引创建哈希索引以进一步提升查询速度。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++类模板详解

在学习类模板之前可以了解一下函数模板,可以参考我的另一篇文章C函数模板详解(结合代码)-CSDN博客 讲解的比较详细,有助于理解类模板。 目录 1、什么是类模板? 2、类模板与函数模板区别 3、类模板对象做函数参数 …

《早起的奇迹》要么躺在床上等待生活的暴击,要么早起创造奇迹 - 三余书屋 3ysw.net

精读文稿 今天我们讲述的是关于《早起的奇迹》。通过神奇的早起,我们可以获得改变人生的力量。首先我要给你讲一个故事,这个故事的主人公是一个年轻人,他在少年时就取得了巨大的成就,在15岁时他已经拥有了自己的电台节目&#xff…

Failed to load plugin because libnvinfer.so.8: 无法打开共享目标文件: 没有那个文件或目录

首先查看自己是否安装了tensorrt(如果没有,就先执行下面安装) pip install tensorrt控制台输入如下代码,查看tensorrt包的路径 python3 -c "import tensorrt; print(tensorrt.__path__)"找到自己安装包的对应路径 3.…

鸿蒙OS开发实例:【工具类封装-http请求】

import http from ohos.net.http; import promptAction from ohos.promptAction; 封装HTTP接口请求类,提供格式化的响应信息输出功能。 使用 DevEco Studio 3.1.1 Release 及以上版本,API 版本为 api 9 及以上。 示例: import { MyHttpUtil…

centos安装jdk的坑

文章目录 一、安装jdk二、查找jdk的目录三、配置JAVA_HOME 一、安装jdk 我们一般用yum search java | grep jdk查询可以安装的jdk 但是一定要注意如下图,必须知道jdk和jre的区别 yum install java-1.8.0-openjdk-devel.x86_64二、查找jdk的目录 用如下命令 sudo…

kubernetes负载均衡资源-Ingress

一、Ingress概念 1.1 Ingress概念 使用NodePort类型的Service可以将集群内部服务暴露给集群外部客广端,但使用这种类型Service存在如下几个问题。 1、一个端口只能一个服务使用,所有通过NodePort暴露的端口都需要提前规划;2、如果通过NodePort暴露端口过多,后期维护成本太…

快讯|Tubi 在美国电视总观看的份额提升至 1.7%

​在每月一期的 Tubi 快讯中,你将全面及时地获取 Tubi 最新发展动态,欢迎🌟星标关注【比图科技】,一起成长变强! Tubi 在美国电视总观看的份额提升至 1.7% 根据 Nielsen 最新发布的 The Gauge 报告,2024 年…

监控系统介绍

文章目录 监控系统的分类日志类(logs)调用链类(tracing)度量类(metrics) 监控系统的分层监控系统典型架构采集器TelegrafExportersGrafana-Agent 时序库OpenTSDBInfluxDBTDEngineM3DBVictoriaMetricsTimescaleDBPrometheus 告警引擎数据展示 监控系统的分类 针对不同场景把监控…

网络: 传输层

功能: 将数据从发送到传给接收端 UDP 无连接状态: 知道对端的IP和端口号就直接进行传输, 不需要建立连接不可靠: 没有确认机制, 没有重传机制. 出错不会管面向数据包: 不能够灵活的控制读写数据的次数和数量 发送速度快: 立即发送 报文结构 TCP 面向连接可靠 校验和序列号(按…

基于SwinTransformer和Unet的自适应多类别分割

1、介绍 transformer的基于全局信息的把握,使得对图像的处理成为了可能 swin-transformer在图像分类应用的成功,证明了transformer比传统的cnn卷积网络可以更好的提取图像特征。因为图像分割也是基于特征信息的融合,将不同尺度下的信息拼接…

vivado 使用远程主机和计算群集

使用远程主机和计算群集 概述 AMD Vivado™集成设计环境(IDE)支持同时并行合成和实现的执行在多个Linux主机上运行。你可以做到这一点通过配置单个主机或指定要在其上启动作业的命令手动执行现有的计算集群。目前,Linux是Vivado唯一支持远程主…

负氧离子监测站:创造健康生活环境

TH-FZ5在蓝天白云之下,那一座座高耸的全彩屏负氧离子监测站,如同一支支科技的绿芽,静静破土而出,为这片土地带来了新的生命力。这些现代化的设备不仅美化了环境,更是我们呼吸健康守护者,它们的存在让我们的…

STM32F10X开发环境的搭建

一、keil软件安装 找到keil软件包,解压缩,找到keil5安装软件: 鼠标右键选择以管理员权限运行。点击next,直到安装结束。 安装完成后在桌面会出现keil5软件图标: 然后再安装相应的芯片支持包:我们用的是stm…

Leetcode - 2580. 统计将重叠区间合并成组的方案数

文章目录 思路AC CODE总结 题目链接:2580. 统计将重叠区间合并成组的方案数 思路 一个区间合并的板子,计算出区间数目之后,每个区间都有放左和放右两种选法,所以最后的答案就是 2 k 2^k 2k。但是需要用c进行二维数组的排序&…

【深度学习】深度学习md笔记总结第2篇:TensorFlow介绍,学习目标【附代码文档】

深度学习笔记完整教程(附代码资料)主要内容讲述:深度学习课程,深度学习介绍要求,目标,学习目标,1.1.1 区别,学习目标,学习目标。TensorFlow介绍,2.4 张量学习目标,2.4.1 张量(Tensor),2.4.2 创建张量的指令,2.4.3 张量…

红外遥控NEC协议

红外遥控技术在我们的日常生活中应用非常广泛,比如我们的遥控器。通过遥控器发射红外光,电视,空调装有红外接收管,负责接受红外光。那么本节将重点介绍其中的原理。 一、工作原理 上图的HS0038便是装在空调,电视上的红…

开放大学2024年春《数控技术 060253》综合大作业参考答案

答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 单选题 1数控系统的核心是( ) …

腾讯云4核8G12M云服务器一年646元,送3个月时长

2024年腾讯云4核8G服务器租用优惠价格:轻量应用服务器4核8G12M带宽646元15个月,CVM云服务器S5实例优惠价格1437.24元买一年送3个月,腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图: 腾讯云4核8G服务器优惠价格 轻…

34.HarmonyOS App DevEco Studio中文界面设置

HarmonyOS App DevEco Studio中文界面设置 重新打开DevEcoStudio,显示中文界面