MySQL 5.7 Reference Manual Including MySQL NDB Cluster 7.5 and NDB Cluster 7.6
Online DDL operations have the following space requirements:
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_size
up to
a maximum specified by
innodb_online_alter_log_max_size
.
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
DB_ONLINE_LOG_TOO_BIG
error and uncommitted
concurrent DML operations are rolled back. A large
innodb_online_alter_log_max_size
setting 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.
The innodb_sort_buffer_size
variable also defines the size of the temporary log file read
buffer and write buffer.
Temporary sort files:
Online DDL operations that rebuild the table write temporary
sort files to the MySQL temporary directory
($TMPDIR
on Unix, %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 tmpdir
to
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.
Intermediate table files:
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-ib
prefix and
only appear briefly during the online DDL operation.
The innodb_tmpdir
option is
not applicable to intermediate table files.