mysql中数据是如何被用B+树查询到的
innoDB是按照页为单位读写的

那页中有很多行数据,是怎么执行查询的呢,首先我们肯定,是以单向列表形式存储的,提高了增删的效率,但是查询效率低。所以实际上对页中的行数据进行了优化,能以二分的方式进行查询,执行这一操作的机制叫做页目录,在页的内部建立分组(包括最大和最小记录,但不包括被删除了的记录)。按照从小到大顺序排列,每组的最大的记录的头信息(file_header)存储着本组记录的数量(见粉红色字段)。页目录存储的是最后一条记录的地址偏移量(槽、slot,相当于页目录有个指针,指向每个组的最后一条记录)。所以二分就能根据每个slot的最大值判定当前查询应该去哪个分组。

然后我们抽象到更高层次,页如何被查询的?其实B+树的每个节点都是一页,只不过非叶子节点的数据是指针。叶子节点才是真的数据。

然后索引又分为聚簇索引和二级索引。
聚簇索引一般是主键索引,如果没有主键就选不包含NULL值得唯一列,如果还没有MySQL会创建一个隐藏的自增id列当作聚簇索引。聚簇索引叶子节点存的是真实数据。
二级索引就是建立的索引,叶子节点存放的是主键值,也就是说用了二级索引,查到后,还要用查到的主键值再查一遍聚簇索引才能获取数据结果,这个过程叫做回表。但假如你要查的就是主键,那就只查一次即可。
相关文章:
mysql中数据是如何被用B+树查询到的
innoDB是按照页为单位读写的 那页中有很多行数据,是怎么执行查询的呢,首先我们肯定,是以单向列表形式存储的,提高了增删的效率,但是查询效率低。所以实际上对页中的行数据进行了优化,能以二分的方式进行查…...
Redisson 分布式锁的最佳实践
Redisson 分布式锁的最佳实践 第一、添加依赖第二、添加redisson配置类第三、添加测试类测试结果扩展知识redisson锁中lock方法和tryLock方法有什么区别锁续约 注意事项 引言 在现代分布式系统中,处理并发问题是至关重要的。分布式锁是解决这类问题的关键工具之一。…...
ArkTS声明式开发范式
装饰器 用来装饰类、结构体、方法以及变量,赋予其特殊的含义,如上述示例中 Entry 、 Component 、 State 都是装饰器。 Component 表示这是个自定义组件; Entry 则表示这是个入口组件; State 表示组件中的状态变量,…...
史诗级云故障敲响警钟,应用保障不能没有“连续键”!
近日,知名云服务商出现一次史诗级的云故障:全球所有区域/所有服务同时异常,故障持续长达3小时之多,云上众多应用受到极大影响。 如今,在一个充满不确定性和复杂性的数字化时代,哪怕是顶级云服务商亦不能避…...
SSH连接远程服务器报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 解决方法
一.错误描述 报错信息里提示了路径信息/root/.ssh/known_hosts:20 二.解决方案 方法一 输入以下指令: ssh-keygen -R XXX(需要连接远程服务器的ip) 按照我的例子ip:10.165.7.136,会返回以下信息: 重新尝试连接: 输…...
数据库——查询连续的月份
一、GP或PGSQL with recursive t(n) as (select date(2023-01-01) union all select n1 from t where n < now()) select to_char(n, yyyy-mm) as ny from t group by ny order by ny 二、Hive select add_months(FROM_UNIXTIME(unix_timestamp(SUBSTR(start_date, 1, 7…...
git代码提交命令(如何提交代码)
# 提交暂存区到仓库区 $ git commit -m [message]# 提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] ... -m [message]# 提交工作区自上次commit之后的变化,直接到仓库区 $ git commit -a# 提交时显示所有diff信息 $ git commit -v# 使用一次新的commit…...
jmeter中调用python代码
1、安装pyinstaller pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller 2、将py脚本打包 pyinstaller -F venv/get_image/OCR_jmeter_api.py 3、jmeter中添加OS Process Sampler并调用dist下的程序 4、执行jmeter...
当当网获得dangdang商品详情商品列表API 测试请求入口
item_get-获得dangdang商品详情 获取商品详情 item_search-按关键字搜索dangdang商品 获取商品列表 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请…...
git如何查看配置,修改配置,设置配置
# 显示当前的Git配置 $ git config --list# 编辑Git配置文件 $ git config -e [--global]# 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]"...
交通流合成数据生成原理及实现代码
移动数据是设备的地理位置,通过正常活动被动产生。 它具有从交通规划到迁移预测的重要应用。 由于移动数据稀有且难以收集,研究人员已开始探索综合生成移动数据的解决方案。 在本文中,我将讨论一种用于合成移动数据的简单解决方案。 该合成数…...
leetcode 240. 搜索二维矩阵 II
2023.11.22 本题最先想到的是暴力法和二分法,暴力法就不写了,写一下二分法的解法,java代码如下: class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int[] row : matrix){int left 0;int right r…...
a标签超链接 —— 实现点击前中后变色
浅浅记录下 <style type"text/css"> a:link {color: yellow; /*未访问链接颜色*/ }a:visited {color: red; /*已访问链接颜色*/ }a:hover {color: blue; /*鼠标移动到链接颜色*/text-decoration: underline; }a:active {color: orange; /*鼠标点击时颜色*/ }a…...
【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏
【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏 一、proxx小游戏介绍1.1 proxx小游戏简介1.2 开源地址 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、部署Node.js环境4.1 下载Node.js安装包4.…...
IDEA-SVN合并分支到主干
IDEA-SVN合并branch分支到主干master 1.选择VCS的 Integrate Project 2.选择分支合并 Source1 是合并后的分支 , 主分支 master Source2 是被合并的分支 , 分支 branch Try merge 可以尝试是否可以能够被合并,并且无冲突 3.合并完成后当前项目会出现需要提交的内容,检查一…...
kettle如何写日志
var subject"自定义日志输出"; //实例化工厂类 var logFactory new org.pentaho.di.core.logging.LogChannelFactory(); //实例化日志channel对象 var log logFactory.create(subject); //日志输出 log.logMinimal("XXXXXXXXXXXXXXXXXXXXXXXX-preRows"acc…...
新能源车将突破2000万辆,汉威科技为电池安全保驾护航
近年来,我国新能源汽车销量持续突破新高。据中汽协数据,1~10月,国内新能源汽车销量达728万辆,同比增长37.8%,市场占有率达到30.4%。随着第四季度车市传统旺季的到来,新能源消费需求将进一步释放,…...
基于文心一言AI大模型,编写一段python3程序以获取华为分布式块存储REST接口的实时数据
本文尝试基于文心一言AI大模型,编写一段python3程序以获取华为分布式块存储REST接口的实时数据。 一、用文心一言AI大模型将需求转化为样例代码 1、第一次对话:“python3写一段从rest服务器获取数据的样例代码” 同时生成了以下注解 这段代码首先定义…...
2022-4-11 南科大现代控制与最优估计
CLEAR_LAB B站视频 矩阵的分块矩阵操作 diagonal 对角阵 identity matrix 单位矩阵 矩阵克罗内克积...
【注册Huggingface】获取token
Hugging Face是一家美国公司,专门开发用于构建机器学习应用的工具。该公司的代表产品是其为自然语言处理应用构建的transformers库,以及允许用户共享机器学习模型和数据集的平台。 Huggingface 是一个开源的cv、nlp框架,提供了超过100,000个…...
轻量级鼠标交互动画库:声明式配置与CSS Transform性能优化
1. 项目概述:鼠标动画库的诞生与价值最近在重构一个后台管理系统的前端界面,产品经理提了个需求,希望在一些关键操作按钮上增加一些微妙的交互反馈,让整个系统“活”起来,而不是冷冰冰的点击。我第一时间想到的就是鼠标…...
Arm GIC-720AE中断控制器架构与优化实践
1. Arm GIC-720AE中断控制器架构解析GIC-720AE是Arm最新一代的中断控制器IP核,基于GICv4.1/v4.2架构设计。作为多核SoC的中枢神经系统,它管理着从外设到CPU核心的中断信号传递路径。与上一代产品相比,720AE在三个方面有显著提升:首…...
Blackwell消费级GPU本地部署LLM推理实践与优化
1. 项目概述:Blackwell消费级GPU本地部署LLM推理实践在中小企业(SME)的实际业务场景中,大语言模型(LLM)的应用正面临两大核心挑战:数据隐私保护与部署成本控制。传统云API方案虽然便捷,但存在敏感数据外流风险;而专业级…...
DAComp:大语言模型多维评估基准与工程实践
1. 项目背景与核心价值DAComp作为新一代大语言模型评估基准,正在重新定义AI测试方法论。这个由数据科学家和AI工程师共同打造的开源工具,解决了当前LLM评估中的三大痛点:评估维度单一、测试场景脱离实际、缺乏全流程追踪。我在实际参与多个LL…...
DLSS Swapper终极指南:三步实现游戏DLSS智能管理,告别手动替换烦恼
DLSS Swapper终极指南:三步实现游戏DLSS智能管理,告别手动替换烦恼 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾经为了提升游戏帧率,在数十个游戏目录中手动寻找并替换DL…...
多模态索引压缩技术AGC解析与应用实践
1. 多模态索引压缩技术背景与核心挑战在跨模态检索领域,处理海量视频、图像和文本数据时,传统的全量索引存储方式面临严峻挑战。以MSR-VTT视频数据集为例,单个视频平均包含超过300帧的视觉特征,若直接存储原始特征向量,…...
游戏AI智能体开发实战:从强化学习原理到Rainy-Aether-Insiders平台应用
1. 项目概述:当AI遇上游戏,一场关于智能体的“雨夜”实验最近在GitHub上闲逛,发现了一个名为enosislabs/rainy-aether-insiders的项目。这个标题本身就充满了故事感——“雨夜”、“以太”、“内部人士”,组合在一起,像…...
保姆级图解:Linux DRM驱动里TTM内存管理到底是怎么玩的?从申请到缺页全流程拆解
从零拆解Linux DRM驱动中的TTM内存管理:一次显存申请的全景之旅 想象你是一名刚接触GPU驱动开发的工程师,面对"申请4MB显存"这样看似简单的需求,却被告知需要理解TTM、BO、resource等一系列抽象概念。这就像第一次走进陌生的城市&a…...
别再为433MHz天线尺寸发愁了:三种PCB小型化实战方案对比(曲流/加载/高介电材料)
433MHz PCB天线小型化设计:三大技术方案深度解析与工程实践 在物联网设备与智能硬件蓬勃发展的今天,433MHz频段因其良好的穿透性和适中的传输距离,依然是无线遥控、智能家居传感器、工业监测等场景的首选。然而,传统四分之一波长天…...
置顶必读(1) | 《YOLOv12实战:从入门到深度优化》专栏导读与完整目录导航(持续更新中)
🏆 本文收录于 《YOLOv12实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现 YOLOv12 官方特性、Attention-Centric 架构、R-ELAN、Area Attention 等核心创新,内容坚持 严格贴合官方文档 深度原理拆解 工程落地导向,不仅…...
