In addition to storing metadata about database objects in the data
dictionary, MySQL stores it in serialized form. This data is
referred to as Serialized Dictionary Information (SDI).
InnoDB
stores SDI data within its tablespace
files. Other storage engines store SDI data in
.sdi
files that are created in the schema
directory. SDI data is generated in a compact
JSON
format.
Serialized Dictionary Information (SDI) is present in all
InnoDB
tablespace files except for temporary
tablespace and undo tablespace files. SDI records in an
InnoDB
tablespace file only describe table and
tablespace objects contained within the tablespace.
SDI data in within an InnoDB
tablespace file is
only updated by DDL operations on tables within the tablespace.
The presence of SDI data provides metadata redundancy. For
example, if the data dictionary becomes unavailable, object
metadata can be extracted directly from InnoDB
tablespace files using the ibd2sdi tool.
For InnoDB
, an SDI record requires a single
index page, which is 16KB in size by default. However, SDI data is
compressed to reduce the storage footprint.
For partitioned InnoDB
tables comprised of
multiple tablespaces, SDI data is stored in the tablespace file of
the first partition.
The MySQL server uses an internal API that is accessed during DDL operations to create and maintain SDI records.
The IMPORT TABLE
statement imports
MyISAM
tables based on information contained in
.sdi
files. For more information, see
Section 13.2.5, “IMPORT TABLE Syntax”.