10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 从本手册中摘录

15.11.2文件空间管理

您使用该文件在配置文件中定义的数据文件innodb_data_file_path.配置选项表单Innodb.系统表空间。文件逻辑连接以形成系统表空间。没有使用条带。您无法在系统中分配表空间中的系统中的位置。在新创建的系统表空间中,Innodb.从第一个数据文件开始分配空间。

为避免在系统表空间内存储所有表和索引的问题,可以启用innodb_file_per_table配置选项(默认),它将每个新创建的表存储在单独的表空间文件中(带扩展名)的.ibd)。对于以这种方式存储的表,磁盘文件中的碎片更少,当表被截断时,空间将返回到操作系统,而不是仍然由InnoDB保留在系统表空间中。有关更多信息,请参阅第15.6.3.2节,“每个表的文件表空间”

您还可以存储表格一般表格空间。一般表空间是共享使用的表空间创建表空间句法。它们可以在MySQL数据目录之外创建,能够保存多个表,并支持所有行格式的表。有关更多信息,请参阅第15.6.3.3节“一般表空间”

页面,扩展名,段和表空间

每个表空间由数据库组成页面。MySQL实例中的每个表空间都是相同的页面大小。默认情况下,所有表格空间都有16KB的页面大小;您可以通过指定来将页面大小缩小为8kb或4kbinnodb_page_size选项创建MySQL实例时。您还可以将页面大小增加到32kb或64kb。有关更多信息,请参阅innodb_page_size10bet官方网站文档。

页面被分组为范围大小为1MB的页面大小为16KB(连续64页,或128 8KB页,或256个4KB页)。对于页面大小为32KB,范围大小为2MB。对于页面大小为64KB,范围大小为4MB。这文件在一个表空间中被称为Innodb.。(这些段不同于回滚段,它实际上包含许多表空间段。)

当段在表空间内生长时,Innodb.一次将前32页分配给它。之后,Innodb.开始将整个范围分配给段。Innodb.可以在一段大段的时间加入最多4个范围以确保良好的数据顺序。

中为每个索引分配了两个段Innodb.。一个是非左侧节点B树,另一个是叶节点。在磁盘上保持叶节点连续可以实现更好的顺序I/O操作,因为这些叶节点包含实际的表数据。

表空间中的某些页面包含其他页面的位图,因此在域中的几个范围Innodb.表空间无法为整个分段分配给段,但仅作为单个页面。

当您通过发出a询问表空间中的可用空间时显示表状态声明中,Innodb.报告表空间中绝对释放的范围。Innodb.始终为清理和其他内部目的保留一些范围;这些保留范围不包括在可用空间中。

从表中删除数据时,Innodb.收缩相应的b树索引。释放的空间是否对其他用户可用取决于删除模式是否释放表空间的单个页或区段。删除表或从表中删除所有行保证会将空间释放给其他用户,但请记住,删除的行只有由清除操作,在不再需要交易回滚或一致的读取后一段时间发生一段时间。(看第15.3节“InnoDB多版本”)。

页面如何与表行相关联

最大行长度略小于4KB,8KB,16KB和32KB的数据库页面略小于一半数据库页面innodb_page_size设置。例如,对于默认16kb,最大行长度略小于8kbInnodb.页面大小。对于64KB的页,最大行长度略小于16KB。

如果行不超过最大行长度,则所有内容都存储在页面内本地存储。如果一行超过最大行长度,可变长度列选择用于外部非页面存储,直到行符合最大行长度限制。可变长度列的外部关闭页面存储因行格式而异:

  • 紧凑和冗余行格式

    选择可变长度列以用于外部非页面存储,Innodb.将前768字节存储在本地行中,其余的存储在溢出页中。每个这样的列都有自己的溢出页列表。768字节的前缀附带一个20字节的值,该值存储列的真实长度,并指向存储其余值的溢出列表。看第15.10节“InnoDB行格式”

  • 动态和压缩行格式

    选择可变长度列以用于外部非页面存储,Innodb.在行中本地存储20字节的指针,并将其余部分溢出到溢出页面。看第15.10节“InnoDB行格式”

Longblob.longtext.列必须小于4GB,总行长度,包括斑点文本列,必须小于4GB。