文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  表空间 AUTOEXTEND_SIZE 配置

17.6.3.9 表空间 AUTOEXTEND_SIZE 配置

默认情况下,当每个表一个文件或通用表空间需要更多空间时,表空间会根据以下规则增量扩展

  • 如果表空间的大小小于一个扩展,则一次扩展一个页面。

  • 如果表空间的大小大于 1 个扩展但小于 32 个扩展,则一次扩展一个扩展。

  • 如果表空间的大小超过 32 个扩展,则一次扩展四个扩展。

有关扩展大小的信息,请参见 第 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;
注意

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

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

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

允许的最大 AUTOEXTEND_SIZE 为 4GB。最大表空间大小在 第 17.21 节,“InnoDB 限制” 中描述。

最小 AUTOEXTEND_SIZE 设置取决于 InnoDB 页面大小,如以下表格所示

InnoDB 页面大小 最小 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_SIZE。必须使用 ALTER TABLE

对于在每个表一个文件表空间中创建的表,SHOW CREATE TABLE 仅在将 AUTOEXTEND_SIZE 选项配置为非零值时才会显示它。

要确定任何 InnoDB 表空间的 AUTOEXTEND_SIZE,请查询信息模式 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 |
+------+-----------------+
注意

AUTOEXTEND_SIZE 设置为 0(默认设置)时,表示表空间将根据上述默认表空间扩展行为进行扩展。