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

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

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

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

  • 创建表的完整副本

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

  • 重建此表的所有索引

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

  • 减慢并发 DML 吞吐量

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

注意

快速 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。

本页内容: