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  /  The InnoDB Storage Engine  /  InnoDB and Online DDL

17.12 InnoDB 在线 DDL

在线 DDL 特性提供了即时和就地表修改和并发 DML 的支持。该特性的优点包括:

  • 在繁忙的生产环境中,提高响应速度和可用性,因为使表不可用数分钟或数小时是不实际的。

  • 对于就地操作,可以使用 LOCK 子句调整 DDL 操作期间的性能和并发度。见 LOCK 子句

  • 与表复制方法相比,需要较少的磁盘空间和 I/O 开销。

通常,您不需要做任何特殊的事情来启用在线 DDL。默认情况下,MySQL 会尽可能快地执行操作,并尽量减少锁定。

您可以使用 ALGORITHMLOCK 子句控制 DDL 操作的方面。这些子句位于语句的末尾,使用逗号与表和列规范分隔。例如:

ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE;

可以使用 LOCK 子句来 fine-tune 在就地操作期间的并发访问程度。只有 LOCK=DEFAULT 支持即时操作。 ALGORITHM 子句主要用于性能比较和作为回退到旧的表复制行为,以防您遇到任何问题。例如:

  • 要避免在就地 ALTER TABLE 操作期间使表不可用,可以在语句中指定子句,例如 LOCK=NONE(允许读取和写入)或 LOCK=SHARED(允许读取)。如果无法获得所需的并发级别,操作将立即停止。

  • 要比较算法之间的性能,可以使用 ALGORITHM=INSTANTALGORITHM=INPLACEALGORITHM=COPY 运行语句。您也可以启用 old_alter_table 配置选项,以强制使用 ALGORITHM=COPY

  • 要避免服务器被 ALTER TABLE 操作所占用,可以在语句中包含 ALGORITHM=INSTANTALGORITHM=INPLACE。如果无法使用指定的算法,语句将立即停止。