Documentation Home
MySQL 8.0 参考手册  / 第 13 章 SQL 语句  / 13.1 数据定义语句  /  13.1.9 ALTER TABLESPACE 语句

13.1.9 ALTER TABLESPACE 语句

ALTER TABLESPACE tablespace_name
    {ADD | DROP} DATAFILE 'file_name'
    [INITIAL_SIZE [=] size]
    [WAIT]
    ENGINE [=] engine_name

此语句用于添加新数据文件或从表空间中删除数据文件。

该变体使您能够使用子句ADD DATAFILE指定初始大小,其中以字节为单位;默认值为 134217728 (128 MB)。您可以选择 在一个数量级后跟一个单字母缩写,类似于 . 通常,这是字母 (megabytes) 或 (gigabytes) 之一。 INITIAL_SIZEsizesizemy.cnfMG

笔记

所有 NDB Cluster 磁盘数据对象共享相同的命名空间。这意味着每个磁盘数据对象必须唯一命名(而不仅仅是给定类型的每个磁盘数据对象)。例如,您不能拥有同名的表空间和数据文件,或者同名的撤消日志文件和表空间。

在 32 位系统上,支持的最大值为 INITIAL_SIZE4294967296 (4 GB)。(漏洞 #29186)

INITIAL_SIZE明确地四舍五入,至于 CREATE TABLESPACE

数据文件一旦创建,其大小就无法更改;但是,您可以使用附加ALTER TABLESPACE ... ADD DATAFILE 语句将更多数据文件添加到表空间。

使用DROP DATAFILEwith 从表空间中ALTER TABLESPACE删除数据文件 ' file_name'。您不能从任何表正在使用的表空间中删除数据文件;换句话说,数据文件必须是空的(没有使用范围)。请参阅第 21.6.11.1 节,“NDB Cluster 磁盘数据对象”。此外,任何要删除的数据文件之前必须已使用CREATE TABLESPACE或添加到表空间中ALTER TABLESPACE

ALTER TABLESPACE ... ADD DATAFILE和 都ALTER TABLESPACE ... DROP DATAFILE需要一个 ENGINE子句来指定表空间使用的存储引擎。目前,唯一接受的值engine_nameNDBNDBCLUSTER

WAIT被解析但被忽略,因此在 MySQL 5.7 中没有影响。它旨在用于未来的扩展。

ALTER TABLESPACE ... ADD DATAFILE与 一起使用时 ,ENGINE = NDB会在每个 Cluster 数据节点上创建一个数据文件。INFORMATION_SCHEMA.FILES您可以通过查询表来验证数据文件是否已创建并获取有关它们的信息 。例如,以下查询显示属于名为 的表空间的所有数据文件newts

mysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA
    -> FROM INFORMATION_SCHEMA.FILES
    -> WHERE TABLESPACE_NAME = 'newts' AND FILE_TYPE = 'DATAFILE';
+--------------------+--------------+----------------+
| LOGFILE_GROUP_NAME | FILE_NAME    | EXTRA          |
+--------------------+--------------+----------------+
| lg_3               | newdata.dat  | CLUSTER_NODE=3 |
| lg_3               | newdata.dat  | CLUSTER_NODE=4 |
| lg_3               | newdata2.dat | CLUSTER_NODE=3 |
| lg_3               | newdata2.dat | CLUSTER_NODE=4 |
+--------------------+--------------+----------------+
2 rows in set (0.03 sec)

请参阅第 24.3.9 节,“INFORMATION_SCHEMA FILES 表”

ALTER TABLESPACE仅对 NDB Cluster 的磁盘数据存储有用。请参阅 第 21.6.11 节,“NDB Cluster 磁盘数据表”