## 14.6 序列化字典信息 (SDI)

除了将有关数据库对象的元数据存储在数据字典中之外，MySQL 还以序列化的形式存储它。此数据称为序列化字典信息 (SDI)。`InnoDB`将 SDI 数据存储在其表空间文件中。[`NDBCLUSTER`](mysql-cluster.html)将 SDI 数据存储在 NDB 字典中。其他存储引擎将 SDI 数据存储在`.sdi`在表的数据库目录中为给定表创建的文件。SDI 数据以紧凑的形式生成`JSON`格式。

序列化字典信息 (SDI) 存在于所有`InnoDB`表空间文件，临时表空间和撤消表空间文件除外。SDI 记录在`InnoDB`表空间文件仅描述表空间中包含的表和表空间对象。

SDI 数据由表上的 DDL 操作更新，或者[`升级检查表`](check-table.html).当 MySQL 服务器升级到新版本或版本时，SDI 数据不会更新。

SDI 数据的存在提供了元数据冗余。例如，如果数据字典不可用，则可以直接从`InnoDB`表空间文件使用[**ibd2sdi**](ibd2sdi.html)工具。

为了`InnoDB`，SDI 记录需要单个索引页，默认大小为 16KB。但是，SDI 数据被压缩以减少存储空间。

对于分区`InnoDB`由多个表空间组成的表，SDI 数据存储在第一个分区的表空间文件中。

MySQL 服务器使用内部 API，在[DDL](glossary.html#glos_ddl)创建和维护 SDI 记录的操作。

这[`导入表`](import-table.html)声明导入`MyISAM`基于包含的信息的表格`.sdi`文件。有关详细信息，请参阅[第 13.2.5 节，“IMPORT TABLE 语句”](import-table.html).
