ALTER TABLESPACE tablespace_name
{ADD | DROP} DATAFILE 'file_name'
[INITIAL_SIZE [=] size]
[WAIT]
ENGINE [=] engine_name
此语句用于添加新数据文件或从表空间中删除数据文件。
该变体使您能够使用子句ADD DATAFILE
指定初始大小,其中以字节为单位;默认值为 134217728 (128 MB)。在 MySQL NDB Cluster 7.3.2 之前,需要使用数字指定此值(Bug #13116514、Bug #16104705、Bug #62858);在 MySQL NDB Cluster 7.3.2 及更高版本中,您可以选择
在一个数量级后跟一个单字母缩写,类似于
. 通常,这是字母
(megabytes) 或
(gigabytes) 之一。
INITIAL_SIZE
size
size
my.cnf
M
G
所有 NDB Cluster 磁盘数据对象共享相同的命名空间。这意味着每个磁盘数据对象必须唯一命名(而不仅仅是给定类型的每个磁盘数据对象)。例如,您不能拥有同名的表空间和数据文件,或者同名的撤消日志文件和表空间。
在 32 位系统上,支持的最大值为
INITIAL_SIZE
4294967296 (4 GB)。(漏洞 #29186)
INITIAL_SIZE
明确地四舍五入,至于
CREATE TABLESPACE
。
数据文件一旦创建,其大小就无法更改;但是,您可以使用附加ALTER TABLESPACE ... ADD DATAFILE
语句将更多数据文件添加到表空间。
使用DROP DATAFILE
with
从表空间中ALTER TABLESPACE
删除数据文件 ' file_name
'。您不能从任何表正在使用的表空间中删除数据文件;换句话说,数据文件必须是空的(没有使用范围)。请参阅第 18.6.11.1 节,“NDB Cluster 磁盘数据对象”。此外,任何要删除的数据文件之前必须已使用CREATE
TABLESPACE
或添加到表空间中ALTER
TABLESPACE
。
ALTER TABLESPACE ... ADD DATAFILE
和
都ALTER TABLESPACE ... DROP DATAFILE
需要一个
ENGINE
子句来指定表空间使用的存储引擎。目前,唯一接受的值engine_name
是
NDB
和
NDBCLUSTER
。
WAIT
被解析但被忽略,因此在 MySQL 5.6 中没有影响。它旨在用于未来的扩展。
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)
请参阅第 21.5.1 节,“INFORMATION_SCHEMA FILES 表”。
ALTER TABLESPACE
仅对 NDB Cluster 的磁盘数据存储有用。请参阅
第 18.6.11 节,“NDB Cluster 磁盘数据表”。