Mysql表空间、段、区、页的关系

提示:mysql表空间、段、区、页的关系详细描述

文章目录

  • 表空间-TABLE SPACE
    • 1 查看
  • 表空间相关参数
  • 段(segment)
  • 区(extent)
  • 页(page)

Mysql表空间、段、区、页的关系_第1张图片

表空间-TABLE SPACE

从 InnoDB 逻辑存储结构来看,所有的数据都被逻辑的存放在一个空间中,这个空间就叫做表空间(tablespace)。表空间由 段(segment)、区(extent)、页(page)组成。

lnnoDB存储引擎的逻辑存储结构和 Oracle大致相同 ,所有数据都被逻辑地存放在一个空间中 ,我们称之为表空间 ( tablespace ) 。表空间又由段 ( segment ) 、区 ( extent ) 、页 ( page ) 组成 。页在一些文档中有时也称为块(block) , InnoDB存储引擎的逻辑存储结构大致如上一张的图片一样。

表空间可以看做是InnoDB存储引擎逻辑结构的最高层 ,所有的数据都是存放在表空间中。默认情况下 InnoDB存储引擎有一个系统表空间 ,即innoDB data dictionary(InnoDB元数据信息)、doublewrite buffer(双写缓冲区)、change buffer(改变缓冲区)、undo logs都放在这个表空间内 。如果我们启用了参数innodb_file_per_table ,则每张表内的数据可以单独放到一个表空间内

1 查看

show variables like ‘innodb_file_per_table’;

show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.01 sec)

innodb_file_per_table 是否开启单表表空间,该参数为全局参数,可动态修改,默认为ON,如果设置为OFF,在没有显式指定表空间情况下,数据及索引默认存放到系统表空间ibdata下

表空间相关参数

innodb_data_file_path : 表空间大小及文件个数由该参数决定,该参数为全局参数,不可动态修改,默认值为 ibdata1:12M:autoextend,默认的12M大小是根据innodb_page_size按最大值指定的,为了确保其空间可以容纳doublewrite buffer pages,则:
innodb_page_size为16K时(MySQL默认值) 最小值为3M
innodb_page_size为32K时 最小值为6M
innodb_page_size为64K时 最小值为12M

段(segment)

​ 段(Segment)分为索引段,数据段,回滚段等。其中索引段就是非叶子结点部分,而数据段就是叶子结点部分,回滚段用于数据的回滚和多版本控制。一个段包含256个区(256M大小)。

​ 一个段包含多少区:256个区

区(extent)

​ 区是页的集合,一个区包含64个连续的页,默认大小为 1MB (64*16K)。

页(page)

​ 页是 InnoDB 管理的最小单位,常见的有 FSP_HDR,INODE, INDEX 等类型。所有页的结构都是一样的,分为文件头(前38字节),页数据和文件尾(后8字节)。页数据根据页的类型不同而不一样。

​ 每个空间都分为多个页,通常每页16 KiB。空间中的每个页面都分配有一个32位整数页码,通常称为“偏移量”(offset),它实际上只是页面与空间开头的偏移量(对于多文件空间,不一定是文件的偏移量)。因此,页面0位于文件偏移量0,页面1位于文件偏移量16384,依此类推。 (InnoDB 的数据限制为64TiB,这实际上是每个空间的限制,这主要是由于页码是32位整数与默认页大小的组合

你可能感兴趣的:(Linux操作mysql,mysql数据库高级知识,mysqlcop,mysql,数据库)