mysql 09 独立表空间结构

news2024/10/17 0:19:14

表空间中的页实在是太多了,为了更好的管理这些页面,设计 InnoDB 的大叔们提出了 区 (英文名: extent )的概念。对于16KB的页来说,连续的64个页就是一个 区 ,也就是说一个区默认占用1MB空间大小。不论是系统表空间还是独立表空间,都可以看成是由若干个区组成的,每256个区被划分成一组。画个图表示就是这样:在这里插入图片描述
其中 extent 0 ~ extent 255 这256个区算是第一个组, extent 256 ~ extent 511 这256个区算是第二个
组, extent 512 ~ extent 767 这256个区算是第三个组(上图中并未画全第三个组全部的区,请自行脑补),依此类推可以划分更多的组。这些组的头几个页面的类型都是类似的,就像这样:在这里插入图片描述
在这里插入图片描述
02.

为啥好端端的提出一个 区 ( extent )的概念呢?我们以前分析问题的套路都是这样的:表中的记录存储到页里边儿,然后页作为节点组成 B+ 树,这个 B+ 树就是索引,然后吧啦吧啦一堆聚簇索引和二级索引的区别。这套路也没啥不妥的呀~

是的,如果我们表中数据量很少的话,比如说你的表中只有几十条、几百条数据的话,的确用不到 区 的概念,因为简单的几个页就能把对应的数据存储起来,但是你架不住表里的记录越来越多呀。
??啥??表里的记录多了又怎样?

B+ 树的每一层中的页都会形成一个双向链表呀, File Header 中的FIL_PAGE_PREV 和 FIL_PAGE_NEXT 字段不就是为了形成双向链表设置的么?是的是的,您说的都对,从理论上说,不引入 区 的概念只使用 页 的概念对存储引擎的运行并没啥影响,但是我们来考虑一下下边这个场景:

我们每向表中插入一条记录,本质上就是向该表的聚簇索引以及所有二级索引代表的 B+ 树的节点中插入数据。而 B+> 树的每一层中的页都会形成一个双向链表,如果是以 页 为单位来分配存储空间的话,双向链表相邻的两个页之间的物理位置可能离得非常远。我们介绍 B+ 树索引的适用场景的时候特别提到范围查询只需要定位到最左边的记录和最右边的记录,然后沿着双向链表一直扫描就可以了,而如果链表中相邻的两个页物理位置离得非常远,就是所谓的 随机I/O 。再一次强调,磁盘的速度和内存的速度差了好几个数量级, 随机I/O
是非常慢的,所以我们应该尽量让链表中相邻的页的物理位置也相邻,这样进行范围查询的时候才可以使用所谓的 顺序I/O 。

所以,所以,所以才引入了 区 ( extent )的概念,一个区就是在物理位置上连续的64个页。在表中数据量大的时候,为某个索引分配空间的时候就不再按照页为单位分配了,而是按照 区 为单位分配,甚至在表中的数据十分非常特别多的时候,可以一次性分配多个连续的区。虽然可能造成一点点空间的浪费(数据不足填充满整个区),但是从性能角度看,可以消除很多的随机 I/O ,功大于过嘛!

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

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

相关文章

农作物苹果叶片病虫害识别数据集

农作物苹果叶片病虫害识别数据集 一、引言 农作物病虫害是影响农业生产的重要因素之一,其中苹果作为广泛种植的水果品种,其叶片病虫害问题尤为突出。为了有效应对苹果叶片病虫害,提高苹果产量和品质,农业科研机构和学者不断开展…

2024软考网络工程师笔记 - 第4章.局域网和城域网

文章目录 局域网基础1️⃣局域网和城域网体系架构 IEEE(负责链路层)2️⃣局域网拓扑结构 🕑CSMA/CD1️⃣CSMA/CD2️⃣CSMA/CD三种监听算法3️⃣冲突检测原理 🕒二进制指数退避算法1️⃣ 二进制指数退避算法 🕓最小帧长…

你的抠图最快速度是多久?

前言 在图像处理的过程中,抠图速度和质量往往是大家非常关注的问题。那么,你的抠图最快速度是多久呢?今天我要给大家分享一个我用过的极为方便的抠图工具 —— 千鹿 AI。 只需要简单地上传图片,几秒钟后,就能得到一张…

【超详细】TCP协议

TCP(Transmission Control Protocol 传输控制协议) 传输层协议有连接可靠传输面向字节流 为什么TCP是传输控制协议呢? 我们以前所看到的write接口,都是把用户级缓冲区的数据拷贝到发送缓冲区中,然后数据就由TCP自主决定了,所以…

29.第二阶段x86游戏实战2-遍历周围-花指令与二叉树数据结构(有如何阅读vm代码混淆代码)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

到底是微服务,还是SOA?

引言:大概正式工作有5年了,换了三个大厂【也是真特么世道艰难,中国互联网人才饱和了】。基本上每个公司有的架构都不太相同,干过TOC和TOB的业务,但是大家用的架构都不太相同。有坚持ALL in one的SB,最后服务…

windows下安装、配置neo4j并服务化启动

第一步:下载Neo4j压缩包 官网下载地址:https://neo4j.com/download-center/ (官网下载真的非常慢,而且会自己中断,建议从以下链接下载) 百度网盘下载地址:链接:https://pan.baid…

李生——2024年特别推荐中国品牌艺术家

李生北京人,字玄鹤、云鹤,号墨湖斋,玄鹤楼,中国共产党党员。主要成就:中国著名书法家、国家高级书法师、中国当代正能量文艺工作者:时代标杆等荣誉称号,现为中国东方文化研究会科教文化艺术专业委员会副研究员。自幼喜…

基于Python的博客系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

JavaSE——泛型

目录 一、泛型的引入 二、泛型的好处 三、泛型介绍 四、泛型的语法 (一)泛型的声明 (二)泛型的实例化 五、泛型使用的注意事项和细节 六、泛型练习题1 七、自定义泛型 (一)自定义泛型类 (二)自定义泛型接口 (三)自定义泛型方法 八、泛型练习题2 九、泛型的继承和…

【Linux-进程间通信】vscode使用通信引入匿名管道引入

一、新系统,新软件 1.新系统 哈喽宝子们,从今以后我们不再使用风靡一时的CentOS系统了,因为CentOS已经不在维护了,各大公司几乎也都从CentOS转入其他操作系统了;我们现在由原来的CentOS系统切换到最新的Ubuntu系统&a…

向日葵下载教程以及三款远程控制工具推荐!!!

向日葵远程控制下载教程!! 亲爱的朋友们,如果你对远程控制软件有所需求,那么向日葵绝对是一个不错的选择。现在我将带你走一遍向日葵的下载流程。 1. 打开你的浏览器,输入“向日葵官方网站”,进入官方网站…

力扣之1398.购买了产品A和产品B却没有购买产品C顾客

题目: Sql 建表语句: Create table If Not Exists Customers (customer_id int, customer_name varchar(30)) Create table If Not Exists Orders (order_id int, customer_id int, product_name varchar(30)) Truncate table Customers insert in…

前端求职简历-待补充

当然可以,针对大厂的前端岗位,一个吸引人的简历应该突出你的技术能力、项目经验、教育背景以及任何能体现你学习能力和团队协作能力的证明。以下是一个简历大纲示例,你可以根据自己的实际情况进行调整: 个人信息 姓名联系方式&a…

如何在算家云搭建SadTalker(数字人)

一、SadTalker简介 SadTalker 是一个基于深度学习的AI 数字人制作工具,可以通过对照片中的人物进行动态化处理,生成具有头部运动和面部表情的数字人。该模型通过接收一张图片和一段音频文件,能够自动生成包含人脸动作(如张嘴、眨眼、移动头部…

comfyui工作流保姆级教程来啦(附整合包)!从入门到精通一文解决

一、SD主流 UI Stable Diffusion(SD)因为其开源特性,有着较高的受欢迎程度,并且基于SD的开源社区及教程、插件等,都是所有工具里最多的。基于SD,有不同的操作界面,可以理解为一个工具的不同客户…

网络编程(21)——通过beast库快速实现http服务器

目录 二十一、day21 1. 头文件和作用域重命名 2. reponse时调用的一些函数 3. http_connection a. 构造函数 b. start() c. process_request() d. create_response() e. create_post_response() f. write_response() 4. Server 5. 主函数 6. 测试 1)测…

AOP 面向切面编程

1.准备工作&#xff0c;创建maven项目 1. pom.xml 加入依赖 <dependencies><!--spring核心坐标--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.6</version&…

【Python入门】提升 Python 水平的高级指南

如果你正在学习Python&#xff0c;那么你需要的话可以&#xff0c;点击这里&#x1f449;Python重磅福利&#xff1a;入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享&#xff01; Python是一种功能强大且灵活的编程语言&#xff0c;深受开发者喜爱。尽管Py…

番外篇 | 史上最全的关于CV的一些经典注意力机制代码汇总

前言:Hello大家好,我是小哥谈。注意力是人类认知系统的核心部分,它允许我们在各种感官输入中筛选和专注于特定信息。这一能力帮助我们处理海量的信息,关注重要的事物,而不会被次要的事物淹没。受到人类认知系统的启发,计算机科学家开发了注意力机制,这种机制模仿人类的这…