ALTER [UNDO] TABLESPACE tablespace_name
NDB only:
{ADD | DROP} DATAFILE 'file_name'
[INITIAL_SIZE [=] size]
[WAIT]
InnoDB and NDB:
[RENAME TO tablespace_name]
InnoDB only:
[AUTOEXTEND_SIZE [=] 'value']
[SET {ACTIVE | INACTIVE}]
[ENCRYPTION [=] {'Y' | 'N'}]
InnoDB and NDB:
[ENGINE [=] engine_name]
Reserved for future use:
[ENGINE_ATTRIBUTE [=] 'string']
该语句用于 NDB
和 InnoDB
表空间。它可以用于向 NDB
表空间添加新数据文件或从中删除数据文件。它还可以用于重命名 NDB
集群磁盘数据表空间、重命名 InnoDB
通用表空间、加密 InnoDB
通用表空间或标记 InnoDB
撤销表空间为活动或非活动。
使用 UNDO
关键字与 SET {ACTIVE | INACTIVE}
子句来标记 InnoDB
撤销表空间为活动或非活动。有关更多信息,请参阅 第 17.6.3.4 节,“撤销表空间”。
使用 ADD DATAFILE
变体可以指定 NDB
磁盘数据表空间的初始大小使用 INITIAL_SIZE
子句,其中 size
以字节为单位;默认值为 134217728(128 MB)。您可以选择性地在 size
后跟随一个字母缩写,用于表示数量级,类似于在 my.cnf
中使用的缩写。通常,这是一个字母,例如 M
(兆字节)或 G
(吉字节)。
在 32 位系统上,INITIAL_SIZE
的最大支持值为 4294967296(4 GB)。(Bug #29186)
INITIAL_SIZE
将被明确地四舍五入,类似于 CREATE TABLESPACE
。
一旦创建了数据文件,其大小就不能更改;但是,您可以使用其他 ALTER TABLESPACE ... ADD DATAFILE
语句向 NDB
表空间添加更多数据文件。
当使用 ALTER TABLESPACE ... ADD DATAFILE
语句时,带有 ENGINE = NDB
,将在每个集群数据节点上创建数据文件,但只有一个行将被生成在信息模式 FILES
表中。请参阅该表的描述,以及 第 25.6.11.1 节,“NDB 集群磁盘数据对象”,以获取更多信息。ADD DATAFILE
不支持 InnoDB
表空间。
使用 DROP DATAFILE
与 ALTER TABLESPACE
删除 NDB 表空间中的数据文件 'file_name
'。您不能从正在使用的表空间中删除数据文件;换言之,数据文件必须为空(没有使用的 extent)。请参阅 第 25.6.11.1 节,“NDB 集群磁盘数据对象”。此外,任何要删除的数据文件必须先使用 CREATE TABLESPACE
或 ALTER TABLESPACE
添加到表空间中。DROP DATAFILE
不支持 InnoDB 表空间。
WAIT
被解析但否则被忽略。它旨在未来扩展。
该 ENGINE
子句,指定表空间使用的存储引擎,已弃用;预计在未来版本中删除。表空间存储引擎由数据字典知晓,使得 ENGINE
子句变得过时。如果指定了存储引擎,它必须与数据字典中定义的表空间存储引擎匹配。只有 NDB
表空间支持的引擎名称为 NDB
和 NDBCLUSTER
。
RENAME TO
操作隐式地在 autocommit
模式下执行,不管 autocommit
设置如何。
不能在 LOCK TABLES
或 FLUSH TABLES WITH READ LOCK
生效时对表空间执行 RENAME TO
操作。
独占的 元数据锁 将被取在表空间中的表上,而表空间被重命名时,这将阻止并发 DDL。并发 DML 是支持的。
需要 CREATE TABLESPACE
权限来重命名通用 InnoDB 表空间。
该 AUTOEXTEND_SIZE
选项定义了 InnoDB 表空间扩展的大小。当表空间满时,它将根据隐式默认行为扩展。更多信息,请参阅 第 17.6.3.9 节,“表空间 AUTOEXTEND_SIZE 配置”。
该 ENCRYPTION
子句启用或禁用 InnoDB
通用表空间或 mysql
系统表空间中的页面级数据加密。
在启用加密之前,必须安装并配置密钥环插件。
如果 table_encryption_privilege_check
变量启用,则需要 TABLE_ENCRYPTION_ADMIN
权限来更改具有不同 ENCRYPTION
子句设置的通用表空间。
如果某个表属于使用 DEFAULT ENCRYPTION='N'
定义的模式,则启用通用表空间的加密将失败。类似地,如果某个表属于使用 DEFAULT ENCRYPTION='Y'
定义的模式,则禁用加密将失败。
如果在通用表空间上执行的 ALTER TABLESPACE
语句不包含 ENCRYPTION
子句,则表空间将保留其当前加密状态,不管 default_table_encryption
设置如何。
当通用表空间或 mysql
系统表空间被加密时,表空间中的所有表都将被加密。类似地,在加密表空间中创建的表也将被加密。
当更改通用表空间或 mysql
系统表空间的 ENCRYPTION
属性时,将使用 INPLACE
算法。该算法允许在表空间中的表上执行并发 DML 操作,但阻止了并发 DDL。
有关更多信息,请参阅 第 17.13 节,“InnoDB 静态数据加密”。
该 ENGINE_ATTRIBUTE
选项用于指定主要存储引擎的表空间属性。该选项保留供将来使用。
允许的值是一个包含有效 JSON
文档的字符串文字或空字符串 ('')。无效的 JSON
将被拒绝。
ALTER TABLESPACE ts1 ENGINE_ATTRIBUTE='{"key":"value"}';
ENGINE_ATTRIBUTE
值可以重复指定,而不出现错误。在这种情况下,将使用最后指定的值。
ENGINE_ATTRIBUTE
值不会被服务器检查,也不会在更改表的存储引擎时被清除。
不允许更改 JSON 属性值的单个元素。您只能添加或替换属性。