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  /  ...  /  ALTER TABLESPACE Statement

15.1.10 ALTER TABLESPACE 语句

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']

该语句用于 NDBInnoDB 表空间。它可以用于向 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 DATAFILEALTER TABLESPACE 删除 NDB 表空间中的数据文件 'file_name'。您不能从正在使用的表空间中删除数据文件;换言之,数据文件必须为空(没有使用的 extent)。请参阅 第 25.6.11.1 节,“NDB 集群磁盘数据对象”。此外,任何要删除的数据文件必须先使用 CREATE TABLESPACEALTER TABLESPACE 添加到表空间中。DROP DATAFILE 不支持 InnoDB 表空间。

WAIT 被解析但否则被忽略。它旨在未来扩展。

ENGINE 子句,指定表空间使用的存储引擎,已弃用;预计在未来版本中删除。表空间存储引擎由数据字典知晓,使得 ENGINE 子句变得过时。如果指定了存储引擎,它必须与数据字典中定义的表空间存储引擎匹配。只有 NDB 表空间支持的引擎名称为 NDBNDBCLUSTER

RENAME TO 操作隐式地在 autocommit 模式下执行,不管 autocommit 设置如何。

不能在 LOCK TABLESFLUSH 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 属性值的单个元素。您只能添加或替换属性。