前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >msql独立表空间

msql独立表空间

作者头像
热心的大肚皮
发布2023-02-28 13:57:34
6160
发布2023-02-28 13:57:34
举报
文章被收录于专栏:程序猿日常笔记

大家好,我是热心的大肚皮,皮哥。

今天我们聊一聊表空间。

表空间中数据的物理存储

InnoDb

  • 系统表空间 使用系统表空间的话,会在该表所在数据库对应的子目录下创建一个名为"表名.frm"的文件,表中的数据会存储在对应的文件中。
  • 独立表空间 会在该表所在数据库对应的子目录下创建一个名为"表名.frm"和一个名为"表名.ibd"的文件,表中的数据会存储在这个ibd的文件中。

MyISAM

每个表会有以下3个文件

  • 表名.frm: 表示表结构文件。
  • 表名.MYD:表示表的数据文件。
  • 表名.MYI:表示表的索引文件。

独立表空间结构

表空间的页非常多,为了更好的管理,InnoDB的设计者,提出了区(extent)的概念。对于16KB的页来说,连续的64个页就是一个区,也就是说一个区默认大小1MB,每256个区划为一组。

其中,第一个组第一个区最开始的3个页面是固定的,分别是

  • FSP_HDR 记录表空间一些整体的属性以及(0-255这256个区)的属性,后续细讲,整个表空间只有一个此类型的页面。
  • IBUF_BITMAP 存储Change Buffer 的信息,现在不用知道。
  • INODE 存储了INODE Entry的数据结构,后续细讲。

后续各个组最开始的区最开始的页面类型也是规定的,分别如下。

  • XDES 全程extent descriptor,记录本组256个区的属性,与FSP_HDR差别不大,FSP_HDR多存储了表空间的一些属性。
  • IBUF_BITMAP 与上面一致。

区一共分为4类。

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

区的管理利器-XDES Entry

每个区都对应一个XDES Entry。

  • Segment ID 段的唯一编号,代表这个区被分配到某个段。
  • List Node 多个XDES Entry组成的链表,分别组成FREE、FREE_FRAG、 FULL_FRAG三种双向链表。
  • State 区的状态
  • Page State Bitmap 占用16字节,128位,每两位代表区内的页面。

为了尽量使用顺序I/O,提升磁盘的性能,作者不仅提出了区的概念,有提出了段的概念。上面说的256个区为一个组,其实这个组就是段。

每一个索引都对应2个段,一个叶子节点段,一个非叶子节点段。

段的管理神器-INODE

INODE Entry结构如下。

  • Segment ID :INODE Entry对应的段编号。
  • NOT_FULL_N_USED:在NOT_FULL链表中使用了多少个页面。
  • 3个List Base Node:分别为段的FREE链表、NOT_FULL链表、FULL链表。
  • Magic Number :标记这个INODE Entry是否初始化,如果是97937874则代表已经初始化。
  • Fragment Array Entry:每个该结构都对应着一个零散的页面。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿日常笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档