- 14.10.1 Overview of Online DDL
- 14.10.2 Performance and Concurrency Considerations for Online DDL
- 14.10.3 SQL Syntax for Online DDL
- 14.10.4 Combining or Separating DDL Statements
- 14.10.5 Examples of Online DDL
- 14.10.6 Implementation Details of Online DDL
- 14.10.7 How Crash Recovery Works with Online DDL
- 14.10.8 Online DDL for Partitioned InnoDB Tables
- 14.10.9 Limitations of Online DDL
The online DDL feature has the following benefits:
It improves responsiveness and availability in busy production environments, where making a table unavailable for minutes or hours whenever you modify its indexes or column definitions is not practical.
It lets you adjust the balance between performance and concurrency during the DDL operation, by choosing whether to block access to the table entirely (
LOCK=EXCLUSIVEclause), allow queries but not DML (
LOCK=SHAREDclause), or allow full query and DML access to the table (
LOCK=NONEclause). When you omit the
LOCKclause or specify
LOCK=DEFAULT, MySQL allows as much concurrency as possible depending on the type of operation.
Performing changes in-place where possible, rather than creating a new copy of the table, avoids temporary increases in disk space usage and I/O overhead associated with copying the table and reconstructing secondary indexes.