Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  The InnoDB Storage Engine  /  InnoDB and Online DDL

17.12 InnoDB 和在线 DDL

在线 DDL 功能提供了实时和在位表结构更改的支持,同时也支持并发 DML。该功能的优点包括:

  • 在繁忙生产环境中提高响应性和可用性,避免将表 unavailable数分钟或小时。

  • 对于在位操作,可以使用LOCK子句调整性能和并发性之间的平衡。请参阅The LOCK 子句

  • 使用在线 DDL 可以减少磁盘空间使用和 I/O 过head比传统的表复制方法。

通常,您不需要执行任何特殊操作来启用在线 DDL。默认情况下,MySQL 会尽量快速或在位地执行操作,以尽量减少锁定。

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

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

LOCK子句用于在原地执行的操作,可以用来 fine-tuning 表中的并发访问程度。在瞬间执行的操作中,只支持LOCK=DEFAULTALGORITHM子clause主要用于性能比较和作为fallback,用于在遇到问题时恢复旧的表副本行为。例如:

  • 为了避免意外地使表不可读写或同时不可读写,在执行原地ALTER TABLE操作时,指定LOCK=NONE(允许读写)或LOCK=SHARED(允许读)子句。如果请求的并发级别不可用,操作将立即中止。

  • 为了比较算法的性能,运行一个语句使用ALGORITHM=INSTANTALGORITHM=INPLACEALGORITHM=COPY。您还可以使用old_alter_table配置选项来强制使用ALGORITHM=COPY

  • 为了避免将服务器锁定在一个ALTER TABLE操作中,该操作将复制表,包括ALGORITHM=INSTANTALGORITHM=INPLACE。如果语句不能使用指定的算法,它将立即停止。