Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Tablespace AUTOEXTEND_SIZE Configuration

17.6.3.9 表pace AUTOEXTEND_SIZE 配置

默认情况下,当文件表或通用表空间需要额外的空间时,表空间将根据以下规则进行增量扩展:

  • 如果表空间小于一个extent的大小,它将以一页为单位扩展。

  • 如果表空间大于1个extent但小于32个extent的大小,它将以一个extent为单位扩展。

  • 如果表空间大于32个extent的大小,它将以四个extent为单位扩展。

关于extent大小的信息,请见第17.11.2节,“文件空间管理”

可以通过指定AUTOEXTEND_SIZE选项来配置文件表或通用表空间的扩展大小。配置更大的扩展大小可以帮助避免碎片化和 facilite大规模数据 ingestion。

要为文件表表空间配置扩展大小,请在CREATE TABLEALTER TABLE语句中指定AUTOEXTEND_SIZE大小:

CREATE TABLE t1 (c1 INT) AUTOEXTEND_SIZE = 4M;

ALTER TABLE t1 AUTOEXTEND_SIZE = 8M;

要为通用表空间配置扩展大小,请在CREATE TABLESPACEALTER TABLESPACE语句中指定AUTOEXTEND_SIZE大小:

CREATE TABLESPACE ts1 AUTOEXTEND_SIZE = 4M;

ALTER TABLESPACE ts1 AUTOEXTEND_SIZE = 8M;
Note

可以在创建undo表空间时使用AUTOEXTEND_SIZE选项,但是undo表空间的扩展行为不同。更多信息,请见第17.6.3.4节,“Undo Tablespaces”

AUTOEXTEND_SIZE设置必须是4M的倍数。指定不是4M倍数的AUTOEXTEND__SIZE设置将返回错误。

AUTOEXTEND_ SIZE的默认设置为0,这意味着表空间将根据上述描述的默认行为进行扩展。

AUTOEXTEND_ SIZE的最大允许值是4GB。表空间大小的最大值在第17.21节,“InnoDB Limits”中有描述。

AUTOEXTEND_ SIZE的最小设置取决于InnoDB页面大小,如下表所示:

InnoDB Page Size Minimum AUTOEXTEND_SIZE
4K 4M
8K 4M
16K 4M
32K 8M
64K 16M

默认的InnoDB页面大小为16K(16384字节)。要确定MySQL实例的InnoDB页面大小,请查询innodb_page_size设置:

mysql> SELECT @@GLOBAL.innodb_page_size;
+---------------------------+
| @@GLOBAL.innodb_page_size |
+---------------------------+
|                     16384 |
+---------------------------+

当对表空间的AUTOEXTEND__SIZE设置进行更改时,随后的第一次扩展将将表空间大小增加到一个AUTOEXTEND__SIZE设置的倍数。随后的扩展将是配置的大小。

当使用非零AUTOEXTEND__SIZE设置创建文件-per-表或通用表空间时,表空间将初始化为指定的AUTOEXTEND__SIZE大小。

ALTER TABLESPACE不能用于配置文件-per-表表空间的AUTOEXTEND__SIZE。必须使用ALTER TABLE

对于在文件-per-表表空间中创建的表,SHOW CREATE TABLE只显示AUTOEXTEND__SIZE选项,当且仅当它被配置为非零值时。

要确定任何InnoDB表空间的AUTOEXTEND__SIZE,请查询信息_schema中的INNODB_TABLESPACES表。例如:

mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES 
       WHERE NAME LIKE 'test/t1';
+---------+-----------------+
| NAME    | AUTOEXTEND_SIZE |
+---------+-----------------+
| test/t1 |         4194304 |
+---------+-----------------+

mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES 
       WHERE NAME LIKE 'ts1';
+------+-----------------+
| NAME | AUTOEXTEND_SIZE |
+------+-----------------+
| ts1  |         4194304 |
+------+-----------------+
Note

一个AUTOEXTEND__SIZE为0的设置,这是默认设置,意味着表空间将根据上述描述的默认表空间扩展行为进行扩展。