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  /  ...  /  Online DDL Space Requirements

17.12.3 在线 DDL 空间要求

在线 DDL 操作的磁盘空间要求如下所述。这些要求不适用于即时执行的操作。

  • 临时日志文件:

    在线 DDL 操作创建索引或修改表时,临时日志文件记录并发 DML。临时日志文件根据 innodb_sort_buffer_size 的值扩展,直到达到 innodb_online_alter_log_max_size 指定的最大值。如果操作需要很长时间,并发 DML 修改表如此之多,以致临时日志文件的大小超过 innodb_online_alter_log_max_size 的值,online DDL 操作将失败,并回滚未提交的并发 DML 操作。较大的 innodb_online_alter_log_max_size 设置允许在线 DDL 操作期间更多的 DML,但是也延长了 DDL 操作结束时锁定表以应用日志的时间。

    变量 innodb_sort_buffer_size 也定义了临时日志文件读取缓冲区和写入缓冲区的大小。

  • 临时排序文件:

    在线 DDL 操作在创建索引时,将临时排序文件写入 MySQL 临时目录(Unix 上的 $TMPDIR,Windows 上的 %TEMP%,或由 --tmpdir 指定的目录)中。临时排序文件不在包含原始表的目录中创建。每个临时排序文件足够大以容纳一列数据,并在数据合并到最终表或索引时删除。如果在线 DDL 操作使用了所有可用的磁盘空间,会报告错误。

    如果 MySQL 临时目录不足以容纳排序文件,可以将 tmpdir 设置为不同的目录。或者,使用 innodb_tmpdir 选项定义在线 DDL 操作的单独临时目录,以避免临时目录溢出。

  • 中间表文件:

    一些在线 DDL 操作在重建表时,在原始表所在的目录中创建临时中间表文件。中间表文件可能需要与原始表相同的空间。中间表文件名以 #sql-ib 前缀开头,并且只在在线 DDL 操作期间短暂出现。

    选项 innodb_tmpdir 不适用于中间表文件。