MySQL_表空间

article/2025/11/1 16:39:47

文章目录

  • 表在文件系统中的表示
  • InnoDB的表空间
    • 独立表空间结构
      • 区的概念
      • 段的概念
      • 区的分类 XDES Entry
      • 段的结构 INODE Entry
      • 各类型页面
      • Segment Header 结构的运用
    • 系统表空间
      • InnoDB数据字典

表在文件系统中的表示

InnoDB存储表数据的方式:

  • 每个索引对应一个b+树,每个节点都是一个数据页,用双链表连接
  • 叶子节点存储了完整的用户记录

管理这些页:表空间(系统表空间、独立表空间[为每个表建立一个]、其他类型表空间[通用表\undo\临时表])

MyISAM存储表数据的方式:
没有表空间一说,表的数据和索引数据都存放在数据库子目录下

InnoDB的表空间

独立表空间结构

区的概念

64页-1区 256区-1组

  • 第一个组的最开始的3个页面类型是固定的
    • FSP_HDR记录表空间整体属性以及所有区的属性,整个表空间只有过一个FSP_HDR类型页面
    • IBUF_BITMAP存储有关Change Buffer的一些信息
    • INODE存储INODE Entry的数据结构
  • 其余的各组的两个页面的类型是固定的
    • XDES(extent descriptor)用来登记本组256个区的属性,与FSP_HDR作用类似但是FSP_HDR会额外存储一些表空间的属性
    • IBUF_BITMAP存储有关Change Buffer的一些信息

段的概念

索引->叶子段、非叶子段
碎片区:碎片区的页可以用于不同目的,其中可以有的页属段A,有的页属段B,有的直接属表空间。

  • 刚插入数据时,段从某个碎片区以单个页来分配空间
  • 段占用32个碎片区页面之后,以完整的区为单位分配存储空间
    段是某些零散的页面以及一些完整的区的集合

区的分类 XDES Entry

  • FREE 区的分类
  • FREE_FRAG 有剩余空闲页面的碎片区
  • FULL_FRAG 没有剩余空闲页面的碎片区
  • FSEG 附属于某个段的区

FREE 、FREE_FRAG 、FULL_FRAG属于表空间

XDES Entry 管理以上的
请添加图片描述

  • Segment ID 该区所在的段的ID
  • List Node 将若干个XDES Entry连成一个链表
  • State 区的状态,即以上四个
  • Page State Bitmap 16字节-128位。一个区有64的页,这128位分为64个部分,每部分的第一位表示对应的表是否空闲,第二位还没用到

通过XDES Entry结构中的List Node建成链表,将状态对应的区对应的XDES Entry结构连接成一个链表,直属于表空间

  • FREE链表
  • FREE_FRAG链表
  • FULL_FRAG链表

根据段号建立链表,为每个段中的区的XDES Entry结构建立了3个链表,属于段

  • FREE链表
  • NOT_FULL链表
  • FULL链表

List Base Node(链表及节点)结构,包含了链表的头节点和尾节点等
请添加图片描述

段的结构 INODE Entry

段是一个逻辑上的概念

  • NOT_FULL_N_USED 在NOT_FULL链表中使用了多少个页面
  • MagicNumber 标记INODE Entry是否被初始化
  • Fragment Array Entry 每个对应着一个零散的页面,表页号

请添加图片描述

各类型页面

    • FSP_HDR类型:第一个组的第一个页面,即表空间的第一个页面,存储表空间的整体属性及其第一个组的256个XDES Entry结构
      请添加图片描述
    • XDES类型:只是不记录表空间的整体属性 请添加图片描述
    • IBUF_BITMAP了类型:记录了有关Change Buffer的东西
    • INODE类型:为了存储INODE Entry结构,其中,List Node For INODE Page List通用链表节点,存储上一个和下一个INODE页面的指针,当段超过85个时,需要额外的INODE类型的页面存储。讲这些INODE类型的页面串成两个不同链表
      • SEG_INODES_FULL
      • SEG_INODES_FREE
        请添加图片描述

Segment Header 结构的运用

如何知道哪个段对应哪个INODE Entry结构

  • Space ID 表空间ID
  • Page Number 所在的页面页号
  • Byte Offset 偏移量
    请添加图片描述

系统表空间

开头有许多记录整个系统属性的页面
前1-3页面的类型是与独立表空间 一致的,但后3-7是系统表特有的

  • SYS:存储Change Buffer的头部信息
  • INDEX:存储Change Buffer的根页面
  • TRX_SYS: 事务系统的相关信息
  • SYS:第一个回滚段的信息
  • SYS:数据字典头部信息

其中extent 1和extent 2成为双写缓冲区。

请添加图片描述

InnoDB数据字典

每当向一个表插入一条数据时,需要进行一系列的校验。使用的信息不是使用INSERT语句插入的用户数据,需要引入一些额外数据—元数据
其中有4个表尤其重要,如下‼️

  • SYS_TABLES 所有表信息
    • 以NAME列为主键的聚簇索引
    • 以ID为列建立的二级索引
  • SYS_COLUMNS 所有列信息
    • 只有一个以(TABLE_ID, POS)建立的聚簇索引
  • SYS_INDEXES 所有索引信息
    • 只有一个以(TABLE_ID, ID)列为主键的聚簇索引
  • SYS_FIELDS 所有索引对应的列的信息
    • 只有一个以(INDEX_ID, POS)列为主键的聚簇索引

Data Dictionary Header页面:有了上述的4张表,可以获取其他系统表以及用户定义的表的所有元数据。

  1. 根据表名到SYS_TABLES表中定位到表的TABLE_ID
  2. 使用TABLE_ID到SYS_CCOLUMNS表中获取所有列的信息
  3. 使用TABLE_ID到SYS_INDEXES表中获取所有索引的信息
  4. 使用TABLE_ID到SYS_FIELDS表中获取所有索引列的信息

使用类型为SYS的页面记录上述4张表


http://chatgpt.dhexx.cn/article/dIylxLLA.shtml

相关文章

MPLS协议原理

产生背景 90年代初,互联网流量快速增长,而由于当时硬件技术的限制,路由器采用最长匹配算法逐跳转发数据包,成为网络数据转发的瓶颈。快速路由技术成为当时研究的一个热点。 在各种方案中,IETF确定MPLS协议作为标准的协…

MPLS路由协议详解!

MPLS路由协议的要害是引入了标签(Label)的概念。它是一种短的易于处理的、不包括拓扑信息、只具有局部意义的信息内容。Label短是为了易于处理,一般可以用索引直接引证。只具有局部意义是为了便于分配。熟识ATM的人可能很自然是想到ATM中的VP…

MPLS及LDP协议基础(转载)

1 MPLS简介 MPLS概念的最初提出是为了提高转发效率。因为当时IP转发大多靠软件进行,在转发的每一跳都要进行至少一次最长匹配查找,操作复杂导致转发速度比较慢,由此诞生了MPLS技术(结合IP和ATM的优势于一身)。后来IP转…

MPLS(多协议标签交换)

一、传统IP路由转发的特点及缺点 使用动态路由协议传递路由条目 传统IP路由只能基于数据报中的目的IP转发数据报 每台路由器都要去查找路由表然后逐跳转发 二、MPLS基本工作原理 MPLS:用标签转发,而不是进行IP路由表的查找 MPLS边界路由器:…

什么是MPLS?多协议标签交换(MPLS)基础知识和工作原理

《什么是MPLS?多协议标签交换》 简介 MPLS的起源 90年代中期,IP技术凭借技术简单和成本低廉实现快速发展,Internet数据海量增长。但由于硬件技术存在限制,基于最长匹配算法的IP技术必须使用软件查找路由,转发性能低下&…

MPLS协议原理和配置

文章目录 前言MPLS概述MPLS基本网络结构MPLS体系结构MPLS包头结构抓包现象 LSP建立过程LSP建立方式静态LSP 动态LSPLSP会话建立LDP邻居发现LDP邻居建立 标签的发布方式标签的分配方式标签的保存方式LDP建立LSP过程MPLS数据转发过程特殊标签 实验配置 前言 在90年代中期&#xf…

MPLS之LDP协议

MPLS需要使用标签分发协议完成标签的分配控制和保持,目前有很多种标签分发协议,LDP(Label Distribution Protocol)为其中之一,LSR之间可以使用LDP协议来交换标签信息。 运行LDP协议的LSR之间通过交换LOp消息来发现邻居、建立和维…

MPLS及LDP协议基础

MPLS简介 MPLS概念的最初提出是为了提高转发效率。因为当时IP转发大多靠软件进行,在转发的每一跳都要进行至少一次最长匹配查找,操作复杂导致转发速度比较慢,由此诞生了MPLS技术(结合IP和ATM的优势于一身)。后来IP转发…

网络协议-MPLS

MPLS 简介MPLS的工作原理MPLS的实现原理静态LSP的配置方法动态LSP(LDP)的配置方法相关信息 简介 MPLS的起源 90年代中期,IP技术凭借技术简单和成本低廉实现快速发展,Internet数据海量增长。 但由于硬件技术存在限制&#xff0…

MPLS——LDP协议(工作过程、标签发布和管理方式)

目录 建立LSP的两种方式 静态LSP 动态LSP LDP协议 LDP动态建立LSP涉及的基本概念 LDP工作过程——三个阶段、四种消息类型、五种状态 LDP建立LSP LDP标签发布和管理 PHP 建立LSP的两种方式 LSP是MPLS报文在MPLS网络中转发时经过的路径(数据转发路径&#…

MPLS(多协议标签交换)基础

文章目录 原始包交换标签交换包交换的优化MPLS简介标签报文格式名词解释LDP:标签分发协议LDP会话本地LDP会话建立 标签分发方式标签传递方式 MPLS工作过程控制层面数据层面次末跳(PHP) LDP动态搭建LSPMPLS解决BGP的路由黑洞 静态手工搭建LSP …

MPLS协议基本知识总结(比较详细,好理解)

MPLS(Multiprotocol Label Switching)多协议标签转发复习总结 首先我们要先知道MPLS是为何出现的? MPLS是基于传统IP网络(RIP,OSPF等)的缺陷由IETF确定的 顺便先复习一下路由器查路由表 转发的过程&…

MPLS协议原理与配置

一、MPLS的简单概述 MPLS:(Multi-Protocol Lable Switching的缩写)多协议标签交换:是一种在开放的通信网上利用标签引导数据高速、高效传输的新技术。多协议的含义是指MPLS不但可以支持多种网络层层面上的协议,还可以…

USB概念介绍

USB概念 1. 概念 USB是通用串行总线(Universal Serial Bus),分为HOST/DEVICE两个角色,所有的数据传输都由主机主动发起,而设备只是被动的负责应答。例如,在读数据时,USB先发出读命令,设备收到该命令后&am…

usb芯片PDIUSBD12简介

现在的USB生产厂商很多,几乎所有的硬件厂商都有USB 的产品。USB控制器一般有两种类型:一种是MCU 集成在芯片里面的如Intel 的 8X930AX、CYPRESS的EZ-USB、SIEMENS的C541U以及MOTOLORA、National Semiconductors 等公司的产品。另一种就是纯粹的USB接口芯…

国产USB HUB芯片,GM8220,USB2.0集线器GL850

1 产品概述 GM8220支持 USB2.0 的 4 端口集线器,充分满足 USB2.0 和充电协议( BC1.1/1.2 )。 器件有完整的扫描链,内建自测试模式,可工作在高速、全速、低速三种模式。芯片可 支持充电,可为便携式设备提供充…

USB 转 4 串口芯片 CH9104

CH9104 是一款USB总线的转接芯片,支持最高6M波特率与硬件流控,支持USB配置功能,提供RS485方向控制与GPIO等信号引脚,可实现PC等平台扩展多串口或多个串口设备升级成USB口。CH9104实现 USB 转四个异步串口 UART0/1/2/3 功能&#x…

USB芯片到底完成了哪些工作?

上图,高速模块一般分为控制器 Controlle r和 PHY 两部分,Controller 大多为数字逻辑实现,PHY 通常为模拟逻辑实现。 USB芯片也分为 Controller 部分和 PHY 部分。Controller 部分主要实现 USB 的协议和控制。内部逻辑主要有 MAC 层、CSR 层和…

USB Type-C设备是否需要CC逻辑芯片

FROM:http://www.eeworld.com.cn/xfdz/2015/0323/article_40868.html USB Type-C凭借其自身强大的功能,在Apple, Intel, Google等厂商的强势推动下,必将迅速引发一场USB接口的革命,并将积极影响我们日常生活的方方面面。本文讨论一个重要的…

基于CH340G的USB芯片的学习

本篇文章将讲述CH340G的USB芯片的性能,以及应用模板。小白总结,如有错误,请大神指教。 目录 一、性能 二、注意事项 三、名词解释 一、性能 (1)概述:CH340 是一个 USB 总线的转接芯片,实现…