Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-8178

Wrong progress report for operations on InnoDB tables

    Details

      Description

      Initially reported on the mailing list: https://lists.launchpad.net/maria-discuss/msg02495.html .

      Stage: 1 of 72 'altering table' 350% of stage done. 
      

      Reproducible as described.

      Dataset: salaries table in the employees sample database.

      Statements that exhibit the incorrect behaviour:

      ALTER TABLE salaries ENGINE = Innodb;
      ALTER TABLE salaries ADD id INT NULL;
      ALTER TABLE salaries DROP id;
      ALTER TABLE salaries ROW_FORMAT = COMPRESSED;
      

      I also saw the mentioned 350% and some other values, e.g.

      MariaDB [employees]> ALTER TABLE salaries ADD id INT NULL;
      Stage: 1 of 85 'altering table'    200% of stage done
      

      MyISAM looks reasonable (2 stages, below 100% progress).

      Not reproducible on 5.5.
      10.0 has a different problem – progress for InnoDB tables is not reported at all.

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            jkavalik Jiri Kavalik added a comment - - edited

            After MDEV-8179 it showed on 10.0.20 today:

            optimize table sazky;
            Stage: 1 of 149 'altering table'   1.33% of stage done
            Stage: 1 of 149 'altering table'   15.8% of stage done
            Stage: 1 of 149 'altering table'    100% of stage done
             -- until here tmp file has stable size of 320K, and only after getting to 100% it started to grow by some MB per second
            Stage: 1 of 149 'altering table'    350% of stage done
            Stage: 1 of 149 'altering table'    800% of stage done
            Stage: 1 of 14 'altering table'   14.3% of stage done 
            Stage: 1 of 10 'altering table'     20% of stage done 
            Stage: 1 of 14 'altering table'   14.3% of stage done 
            Stage: 1 of 15 'altering table'   12.5% of stage done 
            Stage: 1 of 11 'altering table'   16.7% of stage done 
            Stage: 1 of 9 'altering table'     20% of stage done  
            Stage: 1 of 12 'altering table'   16.7% of stage done 
            Stage: 1 of 18 'altering table'   11.1% of stage done 
            Stage: 1 of 8 'altering table'     25% of stage done  
            +----------------+----------+----------+-------------------------------------------------------------------+
            | Table          | Op       | Msg_type | Msg_text                                                          |
            +----------------+----------+----------+-------------------------------------------------------------------+
            | vic_main.sazky | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
            | vic_main.sazky | optimize | status   | OK                                                                |
            +----------------+----------+----------+-------------------------------------------------------------------+
            2 rows in set (3 min 1.22 sec)
            
            show table status like 'sazky'\G
            *************************** 1. row ***************************
                       Name: sazky
                     Engine: InnoDB
                    Version: 10
                 Row_format: Compact
                       Rows: 1138155
             Avg_row_length: 153
                Data_length: 174800896
            Max_data_length: 0
               Index_length: 246022144
                  Data_free: 0
            ...
            
            Show
            jkavalik Jiri Kavalik added a comment - - edited After MDEV-8179 it showed on 10.0.20 today: optimize table sazky; Stage: 1 of 149 'altering table' 1.33% of stage done Stage: 1 of 149 'altering table' 15.8% of stage done Stage: 1 of 149 'altering table' 100% of stage done -- until here tmp file has stable size of 320K, and only after getting to 100% it started to grow by some MB per second Stage: 1 of 149 'altering table' 350% of stage done Stage: 1 of 149 'altering table' 800% of stage done Stage: 1 of 14 'altering table' 14.3% of stage done Stage: 1 of 10 'altering table' 20% of stage done Stage: 1 of 14 'altering table' 14.3% of stage done Stage: 1 of 15 'altering table' 12.5% of stage done Stage: 1 of 11 'altering table' 16.7% of stage done Stage: 1 of 9 'altering table' 20% of stage done Stage: 1 of 12 'altering table' 16.7% of stage done Stage: 1 of 18 'altering table' 11.1% of stage done Stage: 1 of 8 'altering table' 25% of stage done +----------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +----------------+----------+----------+-------------------------------------------------------------------+ | vic_main.sazky | optimize | note | Table does not support optimize, doing recreate + analyze instead | | vic_main.sazky | optimize | status | OK | +----------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (3 min 1.22 sec) show table status like 'sazky'\G *************************** 1. row *************************** Name: sazky Engine: InnoDB Version: 10 Row_format: Compact Rows: 1138155 Avg_row_length: 153 Data_length: 174800896 Max_data_length: 0 Index_length: 246022144 Data_free: 0 ...
            Hide
            michaeldg Michaël de groot added a comment -

            I experienced this (InnoDB, 71 stages, up to 900%) on 10.0.21 as well.

            Show
            michaeldg Michaël de groot added a comment - I experienced this (InnoDB, 71 stages, up to 900%) on 10.0.21 as well.
            Hide
            jb-boin Jean Weisbuch added a comment -

            I am hitting this bug on 10.0.21 but with another additional issue : The progress on the CLI starts but after few seconds get stuck and the "STAGE", "MAX_STAGE" and "PROGRESS" columns of "I_S.PROCESSLIST" are all showing 0 for the alter query.

            Happened with an INDEX creation on an InnoDB table and on a "ALTER TABLE xxx KEY_BLOCK_SIZE=0" (on a table that had "ROW_FORMAT=DYNAMIC" and "KEY_BLOCK_SIZE=8").

            Show
            jb-boin Jean Weisbuch added a comment - I am hitting this bug on 10.0.21 but with another additional issue : The progress on the CLI starts but after few seconds get stuck and the " STAGE ", " MAX_STAGE " and " PROGRESS " columns of " I_S.PROCESSLIST " are all showing 0 for the alter query. Happened with an INDEX creation on an InnoDB table and on a " ALTER TABLE xxx KEY_BLOCK_SIZE=0 " (on a table that had " ROW_FORMAT=DYNAMIC " and " KEY_BLOCK_SIZE=8 ").

              People

              • Assignee:
                svoj Sergey Vojtovich
                Reporter:
                elenst Elena Stepanova
              • Votes:
                1 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated: