mysql-innodb的表空间

独立表空间

表空间中存储着承载数据的页,对于16kb的页来说,64个页组成一个区(extent),也就是默认一个区1M,每256个区划分为1组

区的概念是用来管理页的,目的是让在同一个区的页尽量在物理介质上离得近,一个区在物理上就是连在一起的64个页,以提高io查找效率,当数据多的时候会直接分配一个区或者几个区

一个索引会产生两个段,一个用来存储非叶子节点区 一个存储叶子节点区,段是以区为单位申请的空间

XDES Entry记录着对应区的属性

 

  segment Id:当区归属于某个段时 segment Id 代表哪个段的id 不归属与段时 没值

  state: 区的状态FREE(空闲的区)、FREE_FRAG(部分空闲的区)、FULL_FRAG(满的区)和FSEG(归属于某个段的区)

  page state bitmap: 16字节 128位 64个页一个区,每两bit代表一个页的空闲状态第一位表示是否空闲

 

  表空间由若干个区组成,每个区对应一个XDES Entry结构,直属于表空间的区有三个链表,分别是free free_frag full_rag状态的链表

  直属于段的区有三个链表,分别是free free_frag full_rag状态的链表

  每个链表都对应一个List Base Node结构记录了链表的头 链表的尾 链表包含的节点数量 以便我们找到对应的链表

posted @ 2021-04-22 11:15  rudynan  阅读(86)  评论(0编辑  收藏  举报