(五十)大白话深入研究索引之前,先来看看磁盘数据页的存储结构

news2025/1/17 14:10:36

前面我们已经给大家把MySQL数据库的部分内核原理,更新语句的执行原理,事务原理以及锁原理,都初步的讲给大家听了,同时还穿插了一些相关的数据库性能优化的案例,相信现在大家已经对数据库执行增删改语句的原理有了较为深入的理解了。

接着我们就应该进入比较关键的一个环节,也是很多 人都很期盼的一个环节,就是数据库的索引原理以及查询原理,学完了这块,我们就可以学习大量的实战案例,包括索引设计案例,查询调优案例。

但是今天在深入研究索引之前,我们需要先来看看磁盘上的数据文件中的数据页的物理存储结构,因为后续研究索引的物理存储结构以及使用原理的时候,都是跟数据页的物理存储结构是有很大关联的。

其实之前大家都知道,数据库最终所有的数据(包括我们建的各种表以及表里的数据)都是要存放在磁盘上的文件里的,然后在文件里存放的物理格式就是数据页,那么大量的数据页在磁盘文件里是怎么存储的呢?

首先大家要明白的一点是,大量的数据页是按顺序一页一页存放的,然后两两相邻的数据页之间会采用双向链表的格式互相引用,大致看起来如下图所示。

image-20230108194214028

但是可能有人看到上图就想问了,你画的这个图在磁盘文件里到底是怎么弄出来的啊?

其实一个数据页在磁盘文件里就是一段数据,可能是二进制或者别的特殊格式的数据,然后数据页里包含两个指针,一个指针指向自己上一个数据页的物理地址,一个指针指向自己下一个数据页的物理地址,大概可以认为类似下面这样。

DataPage: xx=xx, xx=xx, linked_list_pre_pointer=15367, linked_list_next_pointer=34126 || DataPage: xx=xx, xx=xx, linked_list_pre_pointer=23789, linked_list_next_pointer=46589 || DataPage: xx=xx, xx=xx, linked_list_pre_pointer=33198, linked_list_next_pointer=55681

上面那段示例数据,当然不能完全认为是MySQL数据库的磁盘文件里的存储格式,但是我这里就是给你看一些类似的东西,其实MySQL实际存储大致也是类似这样的,就是每个数据页在磁盘文件里都是连续的一段数据。

然后每个数据页里,可以认为就是DataPage打头一直到 || 符号的一段磁盘里的连续的数据,你可以认为每一个数据页就是磁盘文件里这么一段连续的东西。

然后每个数据页,都有一个指针指向自己上一个数据页在磁盘文件里的起始物理位置,比如linked_list_pre_pointer=15367,就是指向了上一个数据页在磁盘文件里的起始物理位置,那个15367可以认为就是在磁盘文件里的position或者offset,同理,也有一个指针指向自己下一个数据页的物理位置。

现在你再回头看一下上面那个图,是不是就理解了一个磁盘文件里的多个数据页是如何通过指针组成一个双向链表的!

然后一个数据页内部会存储一行一行的数据,也就是平时我们在一个表里插入的一行一行的数据就会存储在数据页里,然后数据页里的每一行数据都会按照主键大小进行排序存储,同时每一行数据都有指针指向下一行数据的位置,组成单向链表,如下图。

image-20230108194226431

好了,今天我们就把数据页在磁盘文件里的物理存储结构详细讲解了一下,包括数据页内部的物理存储结构,都讲了一下,接下来参照这个物理结构,就给大家说一下没有索引的时候,是如何查找数据的。

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

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

相关文章

小程序容器与微服务架构:提高应用程序开发效率和部署速度的利器

随着移动互联网的发展,小程序已经成为了一种非常流行的应用方式,它可以在不安装任何应用的情况下,直接在移动终端设备(如:App,iPad等)中运行。微服务架构则是一种的分布式系统架构,可…

三维数据可视化软件,可视化地图是用什么做的?

可视化地图是用什么做的?数据可视化地图是一种利用空间数据来表现地理信息的方式,能够为人们提供关于地理信息的准确、直观的可视化图形,以便更好地理解相关信息。数据地图可以最直观的表达出数据之间的空间关系,因此在很多数据分…

【组织架构】中国铁路兰州局集团有限公司

1 公司简介 中国铁路兰州局集团有限公司,是中国国家铁路集团有限公司管理的18个铁路局集团有限公司之一,简称“兰局”。经过59年的发展,现已成为西北地区最大的交通运输企业之一,形成了以兰州为枢纽,由陇海铁路、包兰铁…

前端Cookie基础知识

一、简介 ​ Cookie(也称为HTTP Cookie、Web Cookie、浏览器 Cookie等等)是服务器发送到用户浏览器并保存在本地的一小块数据,该数据通常是用户账号相关的信息,不同浏览器对Cookie的数量和大小限制不同,但一般来说&am…

centos8安装

本文由个人总结,如需转载使用请标明原著及原文地址 1.下载镜像 1.1阿里镜像 可以在阿里云的镜像库里下载,阿里centos8只保留了8.5.2111如果需要别的版本看1.2 http://mirrors.aliyun.com/centos/8/isos/x86_64 1.2其他版本的镜像 下好镜像的可以跳过…

2023年1月京东“白酒”品类销售数据出炉,五粮液表现较好

鲸参谋电商数据监测的2023年1月份京东“白酒”品类销售数据出炉! 根据鲸参谋电商数据显示,2023年1月,京东平台上白酒的销量共计980万,环比增长约180%,同比去年增长约13%;销售额将近69亿,环比增长…

2021年全国职业院校技能大赛(中职组)网络安全竞赛试题A(1)

2021年全国职业院校技能大赛(中职组) 网络安全竞赛试题 (1) 这里是21的试题就以刷题为主,方法可能就不那么详细,如果是新题会详细过程,其他的详细过程可以看22的试题 目录 2021年全国职业院校…

【LeetCode】Day210-二叉搜索树的后序遍历序列

题目 剑指 Offer 33. 二叉搜索树的后序遍历序列【中等】 题解 二叉搜索树性质&#xff1a;左<根&#xff0c;右>根 后序遍历序&#xff1a;左右根 递归分治 利用递归求解&#xff0c;[ i,j ]区间中找到第一个比根节点大的元素&#xff0c;下标为m&#xff0c;则[i,m…

10月17日|实验报告|paddle paddle|概念辨析

目录 一、安装paddle paddle 第一章 零基础入门深度学习 机器学习和深度学习综述 1.人工智能、机器学习、深度学习的关系 1.1人工智能(Artificial Intelligence,AI) 1.2机器学习 1.2.1机器学习的实现 1.2.2机器学习方法论 1.3深度学习​​​​​​​ 一、安装paddle…

Transformer的位置编码笔记(positional encoding)

一、为什么Transformer需要对输入进行位置编码因为Transformer的输入并没有内涵位置信息&#xff0c;同样的词在不同位置&#xff0c;或者同一个序列以不同顺序输入&#xff0c;对应的词间都会得到相同的注意力权重和输出&#xff0c;但是在NLP领域&#xff0c;词的顺序会极大地…

P20 PyTorch 反向传播算法

前言&#xff1a;反向传播是深度学习的基础核心&#xff0c;如果掌握了这个&#xff0c;其它的模型会很容易理解。这里面结合前面的多层感知机&#xff0c;深入了解一下权重数是如何更新的目录&#xff1a;1: 多层感知机节点间的权重系数更新2&#xff1a; 反向传播的基本思路3…

基于VS Code的插件开发(基础篇)

一、基础介绍 VSCode 采用了 Electron&#xff0c;在语言上&#xff0c;VSCode 使用了自家的 TypeScript 语言开发。Electron是基于 Chromium 和 Node.js&#xff0c;使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用&#xff0c;它兼容 Mac、Windows 和 Linux&#xff0c;…

认识DOM和架构

DOM 代表文档对象模型&#xff0c;是 HTML 和 XML 文档的接口(API)。当浏览器第一次读取(解析)HTML文档时&#xff0c;它会创建一个大对象&#xff0c;一个基于 HTM L文档的非常大的对象&#xff0c;这就是DOM。它是一个从 HTML 文档中建模的树状结构。DOM 用于交互和修改DOM结…

SpreadJS 16.0 中文版在线电子表设计预览EXCEL-Crack

SpreadJS 纯前端表格控件 - V16.0 新特性--内容摘自互联网 新文件结构是 SpreadJS 近几个版本中最为重要的架构级更新。这种新文件结构可以大大提高导入大型 Excel 文件的性能&#xff0c;同时在保存时创建更小、优化更好的文件。 在 V15.0 及更早的版本中&#xff0c;Spread…

android事件分发机制源码分析

没什么用的前言责任链设计模式流程图源码分析 没什么用的前言 事件分发机制是面试中一道必问的题目&#xff0c;而我的应对方式则是&#xff0c;在网络上找一些博客看看&#xff0c;然后做一些笔记&#xff0c;最后在面试时将我自己记住的内容说出来。这种方式本身没有太大的…

Editor工具开发实用篇:EditorGUI/EditorGUILayout的区别和EditorGUILayout的方法介绍

目录 一&#xff1a;EditorGUI和EditorGUILayout区别 二&#xff1a;EditorGUILayout 1.EditorGUILayout.BeginFadeGroup(float value); 2.EditorGUILayout.BeginHorizontal EditorGUILayout.BeginVertical 3.EditorGUILayout.BeginScrollView 4.EditorGUILayout.BeginT…

携手中国联通丨美格智能成为中国联通物联网产业联盟苏州分联盟副理事长单位

2月24日&#xff0c;联通数科物联网2023年巡展活动首场——中国联通物联网生态合作伙伴大会暨中国联通物联网产业联盟苏州分联盟成立仪式在苏州成功举办。本次活动由联通数字科技有限公司、中国联通物联网产业联盟联合主办&#xff0c;江苏省物联网服务协会指导&#xff0c;中国…

MySQL运维篇之日志

01、日志 1.1、错误日志 错误日志是MySQL中最重要的日志之一&#xff0c;它记录了当mysqld启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 该日志是默认开启的&…

微服务之Nacos注册与配置

&#x1f3e0;个人主页&#xff1a;阿杰的博客 &#x1f4aa;个人简介&#xff1a;大家好&#xff0c;我是阿杰&#xff0c;一个正在努力让自己变得更好的男人&#x1f468; 目前状况&#x1f389;&#xff1a;24届毕业生&#xff0c;奋斗在找实习的路上&#x1f31f; &#x1…

短视频美颜sdk人脸编辑技术详解、美颜sdk代码分析

短视频美颜sdk中人脸编辑技术可以将人像风格进行转变&#xff0c;小编认为这也是未来的美颜sdk的一个重要发展方向&#xff0c;下文小编将为大家讲解一下短视频美颜sdk中人脸编辑的关键点。 一、人脸编辑的细分关键点 1、年龄 通过更改人脸的年龄属性&#xff0c;可用于模仿人…