B树和B+树索引

news2024/11/23 9:27:06

B树索引

磁盘IO读数据到内存

malloc/newkernel申请4B空间,实际系统可能给2个页面空间即8KB,剩下8KB-4B空间由 lib.solibc++.soptmalloctcmalloc管理 。这样就不需要每次去kernel申请内存

磁盘IO同理,我们读一部分数据会把一整块(16KB)的内容读下来,而不是需要多少读多少,一般会多读一些。

在这里插入图片描述

2000W数据构建AVL树,层数是25层(log2(2000W)),查找最多25次磁盘IO。二叉树是一个节点是数据域两个指针域

如果用500阶B树则只需要3层,即查找最多需要3次IO。500叉树就是499个数据域,500个指针域

使用索引查询流程/原理【面试题】

如 select * from student where uid=5;

执行流程:

  1. 检查uid有索引
  2. 然后去存储引擎请求kernel进行磁盘IO读取索引文件到内存上
  3. 最后用索引构建B树进行加速搜索

B+树索引

在这里插入图片描述

MySQL索引为什么最终是采用B+树呢?

因为B-树有如下缺点:

  • 索引+数据的内容分散在不同的节点上,离根节点近就搜索的快,离根节点远就搜的慢,花费的磁盘IO次数不平均,每一行数据搜索花费时间也不平均;
  • 每一个非叶节点上,不仅要存索引(key) 还要存储索引值所在行的data数据。导致一个节点能存的索引不够多;
  • B-树不方便做范围搜索,整表搜索也不方便。

与此对比,B+树有如下的特点:

  • 每一个非叶节点上,只存key,好处就是一个节点存的key更多,相同数据量层数可能更低,搜索的效率会有所提升;
  • 叶子节点存储了所有索引值,搜索每个索引对应的data值,都要到叶子节点上,这样每一行搜索的时间是比较平均的;
  • 在B-树上如果做区间查找,遍历的节点是非常多的,而B+树所有叶子节点被连接成了有序链表结构,因此做整表遍历和区间查找是非常容易的

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

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

相关文章

2023年6月DAMA-CDGP数据治理专家认证,这家口碑好

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

研一,有点迷茫。

作者:阿秀 校招八股文学习网站:https://interviewguide.cn 这是阿秀的第「277」篇原创 小伙伴们大家好,我是阿秀。 最近回答了不少大一大二研一在读的学习圈中学弟学妹的咨询问题,基本都是计算机学习、进度、疑惑等等相关的问题&a…

chatgpt赋能python:Python怎么批量注释

Python怎么批量注释 Python是一种高级编程语言,广泛应用于数据科学、人工智能、Web开发等领域。在编写Python代码时,注释是非常重要的一部分。注释可以帮助程序员更好地理解代码,便于代码的维护和修改。但有时候,我们需要批量注释…

华为OD机试真题 JavaScript 实现【火星文计算】【2022Q2 100分】,附详细解题思路

一、题目描述 已知火星人使用的运算符为#、$,其与地球人的等价公式如下: x#y 2*x3*y4 x$y 3*xy2 其中x、y是无符号整数;地球人公式按C语言规则计算;火星人公式中,$的优先级高于#,相同的运算符&#x…

YOLOv5/7 更换 DIoU-NMS

文章目录 NMS原理介绍DIoU-NMS效果展示NMS 耗时对比YOLOv5 更换方式YOLOv7 更换方式NMS原理介绍 在执行目标检测任务时,算法可能对同一目标有多次检测。NMS 是一种让你确保算法只对每个对象得到一个检测框的方法。 在正式使用NMS之前,通常会有一个候选框预清理的工作(简单引…

二、微机保护的结构框图原理

在实际应用中,微机保护装置分为单CPU和多CPU的结构方式。在中、低压变电所中多数简单的保护装置采用单CPU结构,而在高压及超高压变电所中复杂保护装置广泛采用多CPU的结构方式。 (一)单 CPU的结构原理 单CPU的微机保护装置是指整套…

5.3.1 因特网的路由协议(一)

5.3.1 因特网的路由协议(一) 我们知道因特网在现实生活中的应用非常广泛,我们可以进行网络聊天、查询资料,购物等,他给我们的现实生活带来了极大地方便,我们已经知道互联网是由一个个经过路由器连接的网络…

Java设计模式(八)— 单例模式3

系列文章目录 单例模式之静态内部类 单例模式之枚举方式 单例模式之JDK源码分析 文章目录 系列文章目录前言一、单例—静态内部类1.静态内部类案例2.静态内部类优缺点 二、单例—枚举方式1.枚举方式案例2.枚举方式优缺点 三、单例—JDK源码分析1.JDK源码分析 四、单例模式注意…

Java同步容器和并发容器

同步容器 在 Java 中,同步容器主要包括 2 类: Vector、Stack、HashTable Vector 实现了 List 接口,Vector 实际上就是一个数组,和 ArrayList 类似,但是 Vector 中的方法都是 synchronized 方法,即进行了同…

大型企业的知识库是什么结构的?真的有用吗?

大型企业的知识库是指建立在企业内部的一个包含各种知识和信息的系统,它可以帮助企业更好地管理和利用企业内部的知识资源,提高企业的创新能力和竞争力。 知识库的结构和内容包括以下几个方面 一、知识分类和标签化 在建立知识库之前,企业…

哪款佩戴舒适的蓝牙耳机好?公认佩戴舒适度高的蓝牙耳机推荐

现如今,蓝牙耳机越多人使用,不同于有线耳机,蓝牙耳机更为方便,没有线束的困扰,走到哪也不用带上手机一起,特别便利。然而,随着蓝牙耳机市场的扩大,各种类型各种样式的耳机五花八门&a…

骨传导蓝牙耳机怎么用,分享几款不错的骨传导耳机

骨传导技术是利用振动将声音转化为不同频率的机械振动,通过人的颅骨、骨迷路、内耳淋巴液传递、螺旋器、听神经、听觉中枢来传递声波。相比传统耳机,它在运动时使用,不会损伤到我们的听力。它不需要入耳佩戴,佩戴更舒适健康。 骨传…

悄悄告诉你有什么免费的ai绘画工具

是不是每次看到一幅美丽的画作,你都会心生羡慕,想要自己也能创造出那样的艺术品?别担心,现在有了ai绘画工具,你也可以轻松成为一位小小画家!这些神奇的工具不仅能够帮助你发挥创造力,还能让你玩…

SQL Server 中count方法和case when语句配合使用中的问题

概要 我们在使用SQL Server生成报表统计数据的时候,经常使用sum,count等聚合函数,有时候还会配合case when语句一边执行过滤操作,一边进行聚合。 本文介绍一个在使用中的常见的错误和解决方法。 设计和实现 下面是一张订单记录…

【链表复习】C++ 链表复习及题目解析 (2)

目录 牛客 CM11 链表分割 牛客 OR36 之链表的回文结构 Leetcode 160. 相交链表 LeetCode 141. 环形链表 LeetCode 138. 复制带随机指针的链表 本文继续延续前文,为大家带来几道经典的链表中等难度的题目。 牛客 CM11 链表分割 现有一链表的头指针 ListNode* p…

探索iOS之Metal标准库

Metal标准库包括&#xff1a;通用函数、整型函数、关系函数、数学函数、矩阵运算、SIMD运算、几何函数、纹理函数等。接下来让我们走进Metal标准库的世界。 1、通用函数 通用函数在<metal_common>头文件中&#xff0c;T为scalar或vector的浮点类型。如下表所示&#xf…

公司最大的内卷,是OKR驱动

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 去年5月&#xff0c;以善用OKR独步江湖的Google公司宣布将对 Google 员工的绩效管理方式进行改革——Google 开始使用一种名为 GRAD 的新绩效评估流程。据了解&#xff0c;这一调整主要是基于员工对谷…

集权设施管理-AD域安全策略(二)

活动目录&#xff08;AD&#xff09;凭借其独特管理优势&#xff0c;从众多企业管理服务中脱颖而出&#xff0c;成为内网管理中的佼佼者。采用活动目录来管理的内网&#xff0c;称为AD域。 了解AD域&#xff0c;有助于企业员工更好地与其它部门协作&#xff0c;同时提高安全意…

算法练习5:二进制字符串前缀一致的次数

给你一个长度为 n 、下标从 1 开始的二进制字符串&#xff0c;所有位最开始都是 0 。我们会按步翻转该二进制字符串的所有位&#xff08;即&#xff0c;将 0 变为 1&#xff09;。 给你一个下标从 1 开始的整数数组 flips &#xff0c;其中 flips[i] 表示对应下标 i 的位将会在…

docker容器 - 卷(volume)- 挂载

目录 参考文档&#xff1a;Volumes | Docker Documentation 什么是卷&#xff08;volume&#xff09;&#xff1f; 什么是挂载&#xff0c;它的作用是什么&#xff1f; 一台机器里的多个容器之间共享数据&#xff08;使用挂载&#xff09; 首先我们可以使用最简单的docker …