[MDEV-8471] No progress report for online DDL of InnoDB tables Created: 2015-07-15 Updated: 2015-08-08 Resolved: 2015-08-08 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Data Definition - Alter Table, Storage Engine - InnoDB |
| Affects Version/s: | 10.0.20 |
| Fix Version/s: | N/A |
| Type: | Bug | Priority: | Major |
| Reporter: | Geoff Montee (Inactive) | Assignee: | Jan Lindström (Inactive) |
| Resolution: | Not a Bug | Votes: | 1 |
| Labels: | innodb | ||
| Issue Links: |
|
||||||||
| Description |
|
Progress reports for online DDL on InnoDB tables does not appear to be working, even after the fix for For example, if I have this table:
And then I execute this:
The progress printed to the terminal is stuck at 25% of stage 1, and SHOW PROCESSLIST is stuck at 0%:
However, if I perform an operation that forces a table copy, such as changing a column's data type, I get a progress report:
The progress report:
Should progress reporting work for online ALTER TABLE in 10.0? I see no mention that it shouldn't in the KB: https://mariadb.com/kb/en/mariadb/progress-reporting/ https://mariadb.com/kb/en/mariadb/alter-table/#progress-reports |
| Comments |
| Comment by Geoff Montee (Inactive) [ 2015-07-15 ] | ||||||||||||||||||||||||||||||||||||||||||||||||
|
If I force the ADD COLUMN operation to use ALGORITHM=COPY, progress is reported:
Then the progress:
| ||||||||||||||||||||||||||||||||||||||||||||||||
| Comment by Jan Lindström (Inactive) [ 2015-07-21 ] | ||||||||||||||||||||||||||||||||||||||||||||||||
|
Hi, I tested this and I do see progress reports on both mysql command line tool as well as show processlist. Note that InnoDB will send progress report only when doing merge sort phase while reconstructing clustered index for the table (basically all tables are stored as clustered index that contain all columns in the table).
| ||||||||||||||||||||||||||||||||||||||||||||||||
| Comment by Geoff Montee (Inactive) [ 2015-07-21 ] | ||||||||||||||||||||||||||||||||||||||||||||||||
|
Hi jplindst,
In practical terms, what does that mean for online DDL in InnoDB? Are there any alter table operations that wouldn't support progress reporting if performed online? For example, if progress reporting is only done when reconstructing the clustered index in InnoDB, is the clustered index reconstructed at all when adding an index to a table with ALGORITHM=INPLACE? | ||||||||||||||||||||||||||||||||||||||||||||||||
| Comment by Jan Lindström (Inactive) [ 2015-07-27 ] | ||||||||||||||||||||||||||||||||||||||||||||||||
|
Hi, My reply was little bit incorrect. InnoDB will send progress report only when doing merge sort phase while reconstructing indexes i.e. either clustered index for the table (basically all tables are stored as clustered index that contain all columns in the table) or secondary indexes. |