Amazon Aurora
Aurora 用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用快速 DDL 在 Amazon Aurora 中修改表

在 MySQL 中,很多数据定义语言 (DDL) 操作会对性能产生明显影响。即使经过最近的在线 DDL 改进,还会对性能产生影响。

例如,假设您使用 ALTER TABLE 操作在表中添加一列。根据指定的算法,该操作可涉及以下步骤:

  • 创建表的完整副本

  • 创建临时表,以处理并发数据操控语言 (DML) 操作

  • 重建此表的所有索引

  • 应用并发 DML 更改时应用表锁定

  • 减慢并发 DML 吞吐量

在 Amazon Aurora 中,您可以使用快速 DDL 立即就地执行 ALTER TABLE 操作。完成该操作无需复制表,对其他 DML 语句也没有重大影响。由于该操作不会在表复制中使用临时存储,因此,甚至可以对小型实例类中的大型表使用 DDL 语句。

重要

目前,必须启用 Aurora 实验室模式才能为 Aurora MySQL 使用快速 DDL。我们不建议为生产数据库集群使用快速 DDL。有关启用 Aurora 实验室模式的信息,请参阅Amazon Aurora MySQL 实验室模式

注意

快速 DDL 可用于 Aurora 版本 1.12 和更高版本。有关 Aurora 版本的更多信息,请参阅Amazon Aurora MySQL 的数据库引擎更新

限制

目前,快速 DDL 具有以下限制:

  • 快速 DDL 仅支持将没有默认值且可为空的列添加到现有表的最后。

  • 快速 DDL 不支持分区表。

  • 快速 DDL 不支持使用 REDUNDANT 行格式的 InnoDB 表。

  • 如果 DDL 操作的最大可能的记录大小太大,则不会使用快速 DDL。如果大于页面大小的一半,则说明记录大小太大。记录的最大大小是将所有列的最大大小相加得出的。对于大小可变的列,按照 InnoDB 标准,不会在计算中包含外部字节。

    注意

    在 Aurora 1.15 中添加了最大记录大小检查。

语法

ALTER TABLE tbl_name ADD COLUMN col_name column_definition

选项

该语句具有以下选项:

  • tbl_name要修改的表的名称。

  • col_name要添加的列的名称。

  • col_definition要添加的列的定义。

    注意

    您必须指定不带默认值且可为空的列定义,否则无法使用快速 DDL。

本页内容: