17.12.3 在线 DDL 空间需求
Disk space requirements for online DDL operations are outlined below. The requirements do not apply to operations that are performed instantly.
-
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 byinnodb_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 ofinnodb_online_alter_log_max_size
, the online DDL operation fails with aDB_ONLINE_LOG_TOO_BIG
error, and uncommitted concurrent DML operations are rolled back. A largeinnodb_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 usinginnodb_tmpdir
. This option was introduced 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.