默认情况下,当表单文件表空间或通用表空间需要额外的空间时,表空间会按照以下规则递增扩展:
如果表空间的大小小于一个区段,则每次扩展一页。
如果表空间大于1个区但小于32个区,则每次扩展一个区。
如果表空间的大小超过32个区段,则每次扩展4个区段。
有关区段大小的信息,请参见第15.11.2节“文件空间管理”.
从MySQL 8.0.23开始,每个表文件或通用表空间的扩展量可以通过指定AUTOEXTEND_SIZE
选择。配置更大的扩展大小可以帮助避免碎片化,并促进大量数据的摄入。
要配置每个表文件表空间的扩展大小,请指定AUTOEXTEND_SIZE
在一个大小创建表
或ALTER TABLE
声明:
CREATE TABLE t1 (c1 INT) AUTOEXTEND_SIZE = 4M;
修改表t1 AUTOEXTEND_SIZE = 8M;
要配置通用表空间的扩展大小,请指定AUTOEXTEND_SIZE
在一个大小创建表空间
或修改表空间
声明:
CREATE TABLESPACE ts1 AUTOEXTEND_SIZE = 4M
修改表空间ts1 AUTOEXTEND_SIZE = 8M
的AUTOEXTEND_SIZE
Option也可以在创建undo表空间时使用,但是undo表空间的扩展行为不同。有关更多信息,请参见第15.6.3.4节“撤消表空间”.
的AUTOEXTEND_SIZE
设置必须是4M的倍数。指定一个AUTOEXTEND_SIZE
如果设置的值不是4M的倍数,则返回错误。
的AUTOEXTEND_SIZE
默认设置为0,这将导致表空间按照上述默认行为进行扩展。
的最大AUTOEXTEND_SIZE
MySQL 8.0.23设置为64M。从MySQL 8.0.24,最大设置是4GB。
最低AUTOEXTEND_SIZE
设置取决于InnoDB
页面大小,如下表所示:
InnoDB页面大小 | 最低AUTOEXTEND_SIZE |
---|---|
4 k |
4米 |
8 k |
4米 |
16 k |
4米 |
32 k |
8米 |
64 k |
16米 |
默认的InnoDB
页面大小为16K(16384字节)。来确定InnoDB
页面大小的MySQL实例,查询innodb_page_size
设置:
mysql >选择@@GLOBAL.innodb_page_size;+---------------------------+ | @@ 全球。innodb_page_size|+---------------------------+ | 16384 | +---------------------------+
当AUTOEXTEND_SIZE
设置时,随后发生的第一个扩展会将表空间大小增加到AUTOEXTEND_SIZE
设置。后续扩展的大小为配置的大小。
当每个表文件或通用表空间使用非零创建时AUTOEXTEND_SIZE
设置时,表空间在指定的位置初始化AUTOEXTEND_SIZE
大小。
修改表空间
不能用于配置AUTOEXTEND_SIZE
表文件表空间的。ALTER TABLE
必须使用。
对于在每个表文件表空间中创建的表,显示创建表
显示了AUTOEXTEND_SIZE
选项,仅在将其配置为非零值时使用。
来确定AUTOEXTEND_SIZE
对于任何InnoDB
表空间,查询INFORMATION_SCHEMA。INNODB_TABLESPACES
表格例如:
mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA。INNODB_TABLESPACES WHERE NAME LIKE 'test/t1';+---------+-----------------+ | 名字| AUTOEXTEND_SIZE | +---------+-----------------+ | 测试/ t1 | 4194304 | +---------+-----------------+ mysql >选择名字,从INFORMATION_SCHEMA AUTOEXTEND_SIZE。INNODB_TABLESPACES WHERE NAME LIKE 'ts1';+------+-----------------+ | 名字| AUTOEXTEND_SIZE | +------+-----------------+ | 壹空间| 4194304 | +------+-----------------+
一个AUTOEXTEND_SIZE
的值,这是默认设置,意味着根据上面描述的默认表空间扩展行为扩展表空间。