innodb存储引擎之:索引的数据结构(B+TREE)

联合索引在B+树上的存储结构及数据查找方式 联合索引如何存储的?又是怎么查找的?为什么要遵循最左前缀原则? 阅读详情

什么是 目录项

每个页对应一个目录项,每个目录项包括下面两个部分

  • 页的用户记录中最小的主键值,用 key 来表示
  • 页号,用 page_no 表示

主键索引结构示意图

二级索引结构示意图

联合索引结构示意图

InnoDB 中 B+ 树索引的注意事项

根节点千年不动窝

一个 B+ 树索引的根节点自创建之日起便不会再移动(也就是页号不再改变)。这样只要我们对某个表建立一个索引 ,那么它的根节点的页号便会被记录到某个地方,后续凡是 InnoDB 存储引擎需要用到这个索引时,都会从那个固定的地方取出根节点的页号,从而访问这个索引

二级索引非叶子节点中目录项记录的唯一性

二级索引的内节点的目录项记录的内容实际上是由 3 部分构成的:

  • 索引列的值
  • 主键值
  • 页号

如果仅仅适用索引列的值加上页号搭配的话,见下图。如果我们想新插入一行记录 其中 c1,c2,c3 的值分别为 9,1,'c' 那么在修改 由 C2 列建立的二级索引对应的 B+树 时,便碰到了个大问题,由于页 3 中存储的目录项记录是由 C2列+页号构成的,页3中的两条目录项记录对应的C1列的值都是 1,而新插入的这条记录中,c2列的值也是1 。那么这条新插入的记录到底应该放到页 4 中, 还是应该放到页 5 中呢? 答案是 对不起 发懵了.

二级索引,非叶子节点的目录项示意图

MySQL索引底层数据结构及原理深入分析 为什么加索引就查的快了?索引到底是什么? 阅读详情

相关推荐

MySQL索引背后的数据结构及算法原理全揭秘

数据库,如果仅仅是用来存个数据、建建表、建建索引、做做增删改查,那么也许觉得数据结构和这东西没什么关系。不过要是想知道的多一点,想研究一下如何优化数据库,那么一定避免不了研究索引的原理,如果想要真正明白索引是怎么工作的,如何合理的使用索引以优化数据库,那么就免不了纠结于一堆数据结构与算法之间了。如果想把数据库索引学个明明白白,就必须将数据结构和算法作为切入点去学习

MySQL高级篇知识点——索引的数据结构

索引的数据结构

代码星辰的博客 2906

innoDB 索引结构详解

1、数据库索引 innoDB和MyISAM对比 区别 innoDB MyISAM 事物支持 支持 不支持 锁粒度 行锁 表锁 并发性 高并发 低并发 构成结构和缓存机制 数据和索引文件都存在在.Idb文件里,并且都缓存在内存里。 数据文件都扩展名.MYD(MYData) 索引文件都扩展名.MYI(MYIndex) 只缓存索引文件,不缓存数据文件 select count(*) 需要扫描全表,统计所有数据 只需要从计数器中读取保存好都行数  注意:MyISAM在mysql 8.0版本将  2、InnoDB 2-1、InnoDB的体系结构有:内存结构,线程,

MySQL InnoDB 表不存在问题修复

MySQL InnoDB 提示表不存在异常修复

lichunliang的博客 2200

慕课软件质量保证与测试(习题集)

慕课金陵科技学院.软件质量保证与测试.期末复习.习题汇总0 总目录1 绪论1.1 软件质量保证与测试的产生与发展1.2 软件缺陷,软件错误,软件故障1.3 软件质量保证与测试的意义,原则和挑战1.4 单元测试1.5 课后作业2 软件测试策略2.1 软件测试的模型,过程和生命周期2.2 软件测试的方法和技术2.3 单元测试2.4 课后作业3 黑盒测试3.1 黑盒测试概述3.2 等价类划分测试3.3 边界值测试3.4 错误推测法3.5 判定表驱动法3.6 因果图法3.7 场景法3.8 正交实验法3.9 单元测试

weixin_42473228的博客 5万+

STM32异常与中断过程详解

1. 异常与中断概念引入 异常主要是指来自CPU内部的意外事件,比如执行了未定义指令、算术溢出、除零运算等发生在CPU内部的意外事件,这些异常的发生,会引起CPU运行相应的异常处理程序;中断一般来自硬件(如片上外设、外部I/O输入等)发生的事件,当这些硬件产生中断信号时,CPU会暂停当前运行的程序,转而去处理相关硬件的中断服务程序。但无论是异常还是中断,都会引起程序执行偏离正常的流程,转而去执行异常/中断的处理函数。 下面对异常和中断的介绍,如果中断信号的产生原因来自CPU内部,则称之为异常;如果中断信号来

luobeihai的博客 1万+

InnoDB索引底层原理剖析

目录 1、索引数据结构2、InnoDB索引的设计(1)计算机原理(2)查找过程(3)聚族索引与二级索引(4)创建索引及索引的类型(5)索引的缺点(6)外键及作用 1、索引数据结构 哈希索引(Hash indexes)采用哈希表来对键值进行查找,时间复杂度为O(1)。1、使用哈希索引时对于键值的等值查询是非常快的,但是其他类型的查询如范围查询、模糊查询、排序等是不能使用哈希索引的。这是哈希索引...

liuzewei2015的博客 1272

数据助力行业发展:BJTU-RAO转向架数据集介绍

BJTU-RAO转向架数据集是完全公开的,何研究人员皆可以通过后文的下载链接免费下载数据,且在标注数据来源的前提下,研究人员可以自由使用BJTU-RAO转向架数据集。因此,聚焦各类列车转向架传动系统在途安全保障新技术研究和新算法开发,实现牵引电机、驱动齿轮箱和轴箱等关键部件的实时状态监测与智能故障诊断,对保障列车安全可靠运行具有重要的现实意义。BJTU-RAO转向架数据集包含51种健康状态的样本,涵盖正常状态、部件级单一故障、部件级复合故障以及系统级关联复合故障,数据量达116GB。

2401_88870554的博客 3502

MySQL 篇-深入了解存储引擎、索引(InnoDB 索引结构 B+Tree、索引使用规则)

索引是帮助 MySQL 高效获取数据的有序的数据结构。在数据之外,数据系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用指向数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。索引的优缺点:优点:1)提高数据检索的效率,降低数据库的 IO 成本。2)通过索引列对数据进行排序,降低数据排序的成本,降低 CPU 的消耗。缺点:1)索引列也是要占用空间的。

小扳手 4333

LM Studio中文版零基础入门:从安装到模型下载的保姆级教程(附国内镜像源配置)

本文提供LM Studio中文版的零基础入门教程,涵盖从软件安装、中文界面切换到国内镜像源配置的全流程。特别针对模型下载速度慢的问题,详细介绍了如何通过修改配置文件使用国内镜像站,并推荐适合新手的入门模型及硬件配置建议,帮助用户快速上手本地大模型运行。

pz890123456的博客 2607

大麦网回流票监控实战:如何利用sign参数和cookie实现自动抢票(避坑指南)

本文详细介绍了如何利用sign参数和cookie构建大麦网回流票监控系统,实现自动化抢票。通过分析大麦网票务系统的核心机制、获取关键身份凭证、逆向分析sign签名算法,并构建完整的监控系统,帮助用户高效捕捉回流票机会。文章还提供了实战避坑指南和合法合规的注意事项,确保系统稳定运行且符合平台规则。

weixin_28568819的博客 415

Mysql-索引数据结构详解(二叉树、红黑树、B-Tree、B+Tree、存储引擎、InnoDB、MyISAM)

Mysql索引底层数据结构详解 索引是什么 索引就好比我们教科书上的目录,我们如果需要阅读我们想要的内容时我们只需要先去目录,找到我们想阅读的内容所在的页码,然后就可以直接翻到指定位置找到我们想要的内容,索引就是帮助数据库对数据建立排好序的数据结构,从而达到高效的获取数据,索引的数据结构有二叉树、红黑树、HASH、BTREE等 磁盘IO是什么 索引就是为了减少磁盘IO次数的那么什么是磁盘IO,首先...

JolyouLu的博客 468

离线安装 nvidia-docker2(nvidia-container-toolkit)

很多时候大家都有用docker使用gpu的需求,但是因为网络等原因不是那么好用,这里留了一个给ubuntu的安装包,网络好的话也提供了在线安装方式。

father_yingying的博客 1181

MySQL索引原理及B-Tree / B+Tree结构详解

MySQL索引原理及B-Tree / B+Tree结构详解 目录 摘要 数据结构及算法基础 索引的本质 B-Tree和B+Tree B-Tree B+Tree 带有顺序访问指针的B+Tree 为什么使用B-Tree(B+Tree) 主存存取原理 磁盘存取原理 局部性原理与磁盘预读 B-/+Tree索引的性能分析 MySQL索引实现 MyISAM索引实现 Inno...

最怕一生碌碌无为,还安慰自己平凡可贵 2万+

解决k8s核心组件calico pod资源不创建问题

解决k8s核心组件calico pod资源不创建问题 1.问题描述 由于K8S集群Master节点故障,导致calico网络组件虽然处于Running状态,但是一直无法准备就绪,如下图所示 calico-node-lpt7h运行在master节点,第一时间紧急处理方法就是将其pod删除,让K8S自动重建该pod,使整个集群快速恢复 但是就当我将calico-node-lpt7h pod删除后,该pod始终无法自建,就好像是从来没有这个pod似的 2.解决方法 期初排查时,我觉得可能是由于当前master

江晓龙的博客 4808

抖音 X-Gorgon 加密算法逆向与 Python 爬虫实战(2026 最新版)

抖音(TikTok 国内版)作为日活超 8 亿的超级 App,其反爬体系在国内互联网中属于顶级难度。核心签名参数X-Gorgon和X-Khronos是几乎所有业务接口(视频详情、评论、搜索、用户主页)的“通行证”。没有正确的 Gorgon 签名,服务器直接返回403或。市面上的教程大多停留在2023 年之前的 V4 版本,而抖音在 2025 年底全面升级到了V6 协议,算法结构、加密常数、混淆方式全部重构。

2201_76125261的博客 357

MySQL 索引底层 B+Tree 原理解析

MySQL 索引底层 B+Tree 原理解析

kerwin的博客 8115

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MySQL底层专题(一)索引数据结构和存储引擎

就是B+树节点存储1170个索引,但是B树只存储16个。

2303_80933038的博客 956

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MySQL索引原理及BTree(B-/+Tree)结构详解

MySQL索引原理及BTree(B-/+Tree)结构详解 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。 文章主要内容分为三个部分。 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引

qq_45344835的博客 4389

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MySQL中MyISAM和InnoDB的索引方式以及区别与选择

一、索引1、什么是索引 索引是一种帮助mysql高效的获取数据的数据结构,这些数据结构以某种方式引用数据,这种结构就是索引。可简单理解为排好序的快速查找数据结构。如果要查“my...

lxw1844912514的博客 1074

深入分析InnoDB索引选型为B+Tree的原因

深入探究InnoDB存储引擎的索引选型为B+Tree原因,及类比各种数据结构分析其适用场景!

qq_40242512的博客 353

Mysql索引底层数据结构、算法及索引存储引擎

mysql官方有句很经典的话: 索引是帮助MySQL高效获取数据的排好序的数据结构。 索引数据结构 :二叉树、 红黑树、 Hash表、 B-Tree。 索引的目的是为了减小查询时间,提高查询效率。怎么减小查询时间呢?这就需要我们减少内存读取磁盘的次数,每查询一次节点数据,就会访问磁盘一次,二叉树和红黑树每个节点只能存储一个数据,如果数据成百上千万,那么树...

xk_dream的博客 426

InnoDB索引的数据结构及数据组织方式

索引数据结构 1、数据存储单元 磁盘:扇区 512字节 文件系统:块 4KB InnoDB:页 16KB 2、InnoDB索引数据结构 1)B-Tree 在看B+Tree之前,我们先看看B-Tree B-Tree是一种为外查找(磁盘类外存储设备,数据量太大不能全放在内存里)而设计的平衡多叉树。那为什么用B树而不用其他的如二叉树、平衡二叉树呢? 原因在于当存储关键字个数确定后,用B树进行存储所需要的...

初心江湖路的博客 2493

MySQL索引数据结构入门

说到索引,最常见的例子就是查字典,当我们需要查询某一个字的含义时,正常操作都是先根据字典的索引,找到该字在哪一页,然后直接翻到该页就行了。如果没有这个索引的话,那么我们就得一页一页的翻字典,直到找到该字。很明显,相对于第一种方案,第二种方案效率就要低很多了。数据库中的索引也是类似的。索引,我们也称之为 index 或者 key,当数据量比较少的时候,索引对于查询产生的效果并不明显,所以索引常常被人所忽略,但是当数据量比较大的时候,一个优秀的索引对查询产生的影响就是非常明显的了。

江南一点雨的专栏 934

mysql数据结构_来一份MySQL索引数据结构及优化清单

作者:PeTu链接:https://www.jianshu.com/p/a935dd9edf04一、mysql数据结构Mysql的两种主要的存储引擎都依赖的数据结构为B+tree,一种从B-tree改进而来的树状数据结构本节将从几个方面来介绍:1. 介绍B-tree和B+tree;2. 介绍两种主要的存储引擎如何实现索引;1.1 介绍B-tree和B+tree1.1.1 B-treeB-tree名...

weixin_39658726的博客 100

来一份MySQL索引数据结构及优化清单

点击上方“后端技术精选”,选择“置顶公众号”技术文章第一时间送达!作者:PeTuwww.jianshu.com/p/a935dd9edf04一、mysql数据结构Mysql的两种主要的存储引擎都依赖的数据结构为B+tree,一种从B-tree改进而来的树状数据结构本节将从几个方面来介绍:介绍B-tree和B+tree;介绍两种主要的存储引擎如何实现索引;1.1 介绍B-tree和B+tree1.1...

Java笔记虾 568
上一篇: innodb存储引擎之:innodb buffer pool
下一篇: mysql是如何选择索引的(为什么会选错索引)
三易的博客
博客等级 码龄15年 42粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值