Details
-
Task
-
Status: Closed (View Workflow)
-
Blocker
-
Resolution: Fixed
Description
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.
Attachments
Issue Links
- blocks
-
MDEV-29985 Remove the parameter innodb_file_per_table
- Stalled
- relates to
-
MDEV-31088 Server freeze due to innodb_change_buffering and innodb_file_per_table=0
- Closed
-
MDEV-14795 InnoDB system tablespace cannot be shrunk
- Closed
-
MDEV-19229 Allow innodb_undo_tablespaces to be changed after database creation
- Closed
-
MDEV-21952 ibdata1 file size growing in MariaDB
- Closed
-
MDEV-27735 Deprecate the parameter innodb_change_buffering
- Closed
-
MDEV-29930 Server hang with innodb_file_per_table=0, innodb_undo_tablespaces=0
- Open
-
MDEV-30332 PLUGIN_VAR_DEPRECATED fails to throw a warning on startup
- Closed
-
MDEV-30563 Failure 1478: Table storage engine 'InnoDB' does not support the create option 'ROW_TYPE' upon OPTIMIZE TABLE after Recovery
- Open