ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

InnoDB(三):InnoDB表的逻辑和物理存储

2021-10-24 18:06:57  阅读:121  来源: 互联网

标签:存储 todo 逻辑 索引 InnoDB 空间 数据


1. InnoDB逻辑存储结构

    所有的数据都被放在一个空间中,这个空间称为表空间(table space),表空间又由段(segmet)、区(extent)和页(page)组成,如下图所示。

(1)表空间(table space)

    表空间是存储引擎的最高层,所有的数据都存放在表空间中。如果没有开启innodb_file_per_table,则所有数据都存放在默认的共享表空间中,如果开启这个参数,那么,每张表的数据可以单独放到一个表空间中。表空间就是存放表的地方,它可以是一个物理文件,也可以是多个物理文件的集合,可以通过参数innodb_data_file_path进行设置。

(2)段(segment)

    由于InnoDB存粗引擎是索引组织的,因此数据即索引,索引即数据。B+树的叶子节点即为数据段,B+树的非叶子节点即为索引段,除了数据段和索引段之外,表空间还包含回滚段。

(3)区(extent)

    一个段通常由多个区组成,每个区大小固定为1MB,为了保证页的连续性,InnoDB存储引擎一次从磁盘申请4~5个区。

(4)页(page)

    区由页组成,默认情况下,InnoDB存储引擎的页大小为16KB,因此一个区由64个连续的页组成,页是InnoDB磁盘管理的最小单位。

    InnoDB1.0.x版本引入了压缩页,即每个页的大小可以通过参数KEY_BLOCK_SIZE设置为2K、4K、8K,因此每个区对应页的数量就应该为512、256、128.

    InnoDB1.2.x版本新增了参数innodb_page_size,通过该参数可以将默认页的大小设置为4K,8K,但是页中的数据是不压缩的,这时区的数量同样也为256,128,总之,不论页的大小怎么变化,区的大小总是为1MB。

    在InnoDB存储引擎中,常见的页类型有:

  • 数据页
  • undo页
  • 系统页
  • 事务数据页
  • 插入缓冲位图页
  • 插入缓冲空闲列表页
  • 未压缩的二进制大对象页
  • 压缩的二进制大对象页

(5)行(row)

     InnoDB的数据是按行进行存储的,每个页存放的行记录也是有硬性规定的,最多允许存放16K/2 - 200 = 7992行记录。

2. InnoDB行记录格式

// todo

3. InnoDB数据页结构

// todo

4. 约束

// todo

5. 视图

// todo

6. 分区表

// todo

标签:存储,todo,逻辑,索引,InnoDB,空间,数据
来源: https://blog.csdn.net/MOU_IT/article/details/120936508

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有