Online DDL operations have the following space requirements:
Space for temporary log files
A temporary log file records concurrent DML when an online DDL operation creates an index or alters a table. The temporary log file is extended as required by the value of
innodb_sort_buffer_sizeup to a maximum specified by
innodb_online_alter_log_max_size. If a temporary log file exceeds the size limit, the online DDL operation fails, and uncommitted concurrent DML operations are rolled back. A large
innodb_online_alter_log_max_sizesetting permits more DML during an online DDL operation, but it also extends the period of time at the end of the DDL operation when the table is locked to apply logged DML.
If the operation takes a long time and concurrent DML modifies the table so much that the size of the temporary log file exceeds the value of
innodb_online_alter_log_max_size, the online DDL operation fails with a
Space for temporary sort files
Online DDL operations that rebuild the table write temporary sort files to the MySQL temporary directory (
%TEMP%on Windows, or the directory specified by
--tmpdir) during index creation. Temporary sort files are not created in the directory that contains the original table. Each temporary sort file is large enough to hold one column of data, and each sort file is removed when its data is merged into the final table or index. Operations involving temporary sort files may require temporary space equal to the amount of data in the table plus indexes. An error is reported if online DDL operation uses all of the available disk space on the file system where the data directory resides.
If the MySQL temporary directory is not large enough to hold the sort files, set
tmpdirto a different directory. Alternatively, define a separate temporary directory for online DDL operations using
innodb_tmpdir. This option was introduced in MySQL 5.7.11 to help avoid temporary directory overflows that could occur as a result of large temporary sort files.
Space for an intermediate table file
Some online DDL operations that rebuild the table create a temporary intermediate table file in the same directory as the original table. An intermediate table file may require space equal to the size of the original table. Intermediate table file names begin with
#sql-ibprefix and only appear briefly during the online DDL operation.
innodb_tmpdiroption is not applicable to intermediate table files.