当前位置: 首页 > article >正文

mysql 09 独立表空间结构

表空间中的页实在是太多了,为了更好的管理这些页面,设计 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.kler.cn/a/350221.html

相关文章:

  • 【Oracle数据库】创建表的同义词示例
  • 高并发内存池_CentralCache(中心缓存)和PageCache(页缓存)申请内存的设计
  • ipad和macbook同步zotero文献附件失败的解决办法
  • Mysql触发器(学习自用)
  • 2025/1/21 学习Vue的第四天
  • 音频入门(一):音频基础知识与分类的基本流程
  • Docker-compose 单节点管理、consul 注册中心、registrator、template
  • YoloV10改进:Neck层改进|使用ContextAggregation模块改善Neck的输出特征|即插即用
  • 部署harbor问题(缺少ssl认证证书)
  • Odin插件基本使用
  • 2018 年 NLP 的 10 个令人兴奋的想法
  • Web前端高级工程师培训:封装自己的库
  • 【洛谷】AT_abc188_c [ABC188C] ABC Tournament 的题解
  • Elastic Stack--16--ES三种分页策略
  • docker使用基础
  • 【含文档】基于Springboot+Vue的白云山景点门票销售管理系统(含源码+数据库+lw)
  • 前端导出json数据函数
  • 【fisco学习记录】搭建第一个单群组联盟链
  • Redis 完整指南:命令与原理详解
  • dart-sass和node-sass的区别,使用dart-sass后可能会出现的问题
  • 请求参数中字符串的+变成了空格
  • Redis技术指南:数据类型、事务处理与过期键管理
  • 倍福TwinCAT程序中遇到的bug
  • 【专题】智启未来:新质生产力引擎驱动下的智能制造行业革新报告合集PDF分享(附原数据表)
  • 2024全网最详细CTF入门指南、CTF夺旗赛使用工具及刷题网站
  • 「从零开始的 Vue 3 系列」:第十一章——跨域问题解决方案全解析