Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

17.6.3.9 表空间 AUTOEXTEND_SIZE 配置

默认情况下,当文件每表或通用表空间需要更多空间时,表空间将根据以下规则进行扩展:

  • 如果表空间小于一个 extent 大小,它将一页一页地扩展。

  • 如果表空间大于 1 个 extent 但小于 32 个 extent 大小,它将一个 extent 一次地扩展。

  • 如果表空间大于 32 个 extent 大小,它将四个 extent 一次地扩展。

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

文件每表或通用表空间的扩展大小可以通过指定 AUTOEXTEND_SIZE 选项来配置。配置较大的扩展大小可以帮助避免碎片化并促进大量数据的摄取。

要配置文件每表表空间的扩展大小,请在 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

AUTOEXTEND_SIZE 选项也可以在创建撤销表空间时使用,但撤销表空间的扩展行为不同。有关更多信息,请参阅 第 17.6.3.4 节,“撤销表空间”

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

AUTOEXTEND_SIZE 的默认设置是 0,这将导致表空间根据上述默认行为进行扩展。

AUTOEXTEND_SIZE 的最大允许值是 4GB。

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 设置,表空间将被初始化为指定的 AUTOEXTEND_SIZE 大小。

ALTER TABLESPACE 不能用于配置文件每表表空间的 AUTOEXTEND_SIZEALTER TABLE 必须被使用。

对于在文件每表表空间中创建的表,SHOW CREATE TABLE 只有在 AUTOEXTEND_SIZE 设置为非零值时才显示该选项。

要确定任何 InnoDB 表空间的 AUTOEXTEND_SIZE,请查询 Information 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,表示表空间根据上述默认行为进行扩展。