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

Deprecate innodb_file_per_table




      Before MySQL 4.1 introduced the parameter innodb_file_per_table, all InnoDB data was written to the InnoDB system tablespace (often named ibdata1). A serious design problem is that once the system tablespace has grown to some size, it cannot shrink even if the data inside it has been deleted.

      There are also other design problems, such as the server hang MDEV-29930 that should only be possible when using innodb_file_per_table=0 and innodb_undo_tablespaces=0 (storing both tables and undo logs in the InnoDB system tablespace).

      MDEV-27735 deprecated and MDEV-29694 will remove the parameter innodb_change_buffering. MDEV-19229 allows the number of innodb_undo_tablespaces to be increased, so that the undo logs can be moved out of the system tablespace.

      If all these things (tables, undo logs, and the change buffer) are removed from the InnoDB system tablespace, the only variable-size data structure inside it is the InnoDB data dictionary. Once MDEV-14795 has been implemented, the system tablespace can be shrunk to minimal size. Undo tablespaces and .ibd files for tables can already be shrunk.

      DDL operations on .ibd files was optimized in MDEV-24626. That should have removed any thinkable performance advantage of using innodb_file_per_table=0.

      Since there should be no benefit of setting innodb_file_per_table=0, the parameter should be deprecated. The default value has been innodb_file_per_table=1 since MySQL 5.6 and MariaDB Server 10.0.


        Issue Links



              marko Marko Mäkelä
              marko Marko Mäkelä
              1 Vote for this issue
              6 Start watching this issue



                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.